总是看到四种权限,这里做一个介绍:

最大权限是public,后面依次是protected,default,private

private修饰的只在本类可以使用

public是最大权限,可以跨包使用,不同包的子类和无关类都可以使用,可以修饰类,方法,成员变量

不写权限就是default默认权限:限于本包内使用

protected权限:跨包后的类如果有继承关系(子类),不能使用default修饰的,而可以使用protected修饰的,调用时候必须在子类的里面才可以调用父类的受保护权限,注意protected不能修饰类

日常开发用的只有:public、private

另外注意:

abstract不可以与static,private,final写在一起

关于代码块:

示例

public class Person {
private String name;
private int age;
public Person(String name,int age){
this.age = age;
this.name = name;
System.out.println("构造方法");
}
//构造代码块
{
System.out.println("构造方法代码块");
}
//静态代码块
static{
System.out.println("静态代码块");
}
}
//静态代码块,只执行一次
//构造代码块,每次创建对象都会执行,优先于构造方法
public class Test {
public static void main(String[] args) {
Person person1 = new Person("张三", 18);
Person person2 = new Person("李四", 18);
}
}
/*
输出:
静态代码块
构造方法代码块
构造方法
构造方法代码块
构造方法
*/

还有一些补充内容:

文档注释和生成jar包

随意写一个类

package demo;

/**
* @author dell
* @version 1.0
*/
public class Person {
/**
*
* @param a
* @param b
* @return function
*/
public int function(int a, int b){
return a+b;
}
}

利用eclipse,选择工程,右键export里面有选择Java,里面有Javadoc等文件,

选择后会生成一套网页,相当于说明书,可以查看相关内容

也可以选择java的其他选项,生成jar包等

导入jar包方式:

通常是在工程目录下新建一个lib文件夹,放入jar包,右键build path  -> add to build path,使用时候import就可以了

面向对象的补充:

1.类可以作为方法的参数传递,即方法的参数可以是一个对象,实质上是传递一个内存地址,在方法中进行对象的相关操作

2.和第一条类似,类也可以作为方法的返回值,即返回一个对象的引用

3.抽象类也可以作为方法的参数和返回值,区别在于:

抽象类没有对象,只能利用多态的特性传递(返回)抽象类的子类对象,注意接收返回值的时候类型必须是抽象类而不是子类

4.接口同样可以作为方法的参数和返回值:

接口也没有对象,必须传递接口的实现类对象,注意可以利用多态创建实现类对象也可以直接创建实现类对象,

同样,作为返回值的时候虽然传入的是实现类对象,但是接收的时候必须是接口类型

针对上面的补充内容写一个简单的案例来理解:

public abstract class Animal {
public abstract void eat();
public static Animal getInstance(){
return new Cat();
}
}
public class Cat extends Animal {
public void eat(){
System.out.println("猫在吃");
}
}
public class Test {
public static void main(String[] args) {
Animal a = Animal.getInstance();
a.eat();//输出:猫吃鱼
}
}

Java学习笔记16(面向对象九:补充内容)的更多相关文章

  1. 疯狂java学习笔记之面向对象(九) - 抽象和接口

    一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...

  2. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  3. Android学习笔记(十九)——内容提供器

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整 ...

  4. Java学习笔记之面向对象、static关键字

    一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...

  5. Java 学习笔记(4)——面向对象

    现在一般的语言都支持面向对象,而java更是将其做到很过分的地步,java是强制使用面向对象的写法,简单的写一个Hello Word都必须使用面向对象,这也是当初我很反感它的一点,当然现在也是很不喜欢 ...

  6. Java学习笔记(十)面向对象---接口

    理解 初期理解 可以认为接口是一个特殊的抽象类.当接口中的方法都是抽象的,那么该类可以通过接口的形式来表示. class用于定义类 interface用于定义接口 格式特点 接口中常见定义:常量,抽象 ...

  7. Java学习笔记二十九:一个Java面向对象的小练习

    一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...

  8. Java学习笔记(十九)——Java 日志记录 AND log4j

    [前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...

  9. 【原】Java学习笔记019 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 仔细想一想,Ani ...

随机推荐

  1. Linux下实现视频读取(三)---Buffer的准备和数据读取

    前面主要介绍的是:V4L2 的一些设置接口,如亮度,饱和度.曝光时间,帧数,增益.白平衡等.今天看看V4L2 得到数据的几个关键ioctl,Buffer的申请和数据的抓取. 1. 初始化 Memory ...

  2. linux系统编程:进程间通信-fifo

    进程间通信-fifo 进程间通信的还有一种方式是fifo. fifo是还有一种管道:有名管道.从名字能够看出.它也是队列. 使用fifo通信前,得先创建fifo $ mkfifo myfifo 随后仅 ...

  3. Ambari源代码分析之Resource.Type与ResourceProvider相应关系

    前面提到.每一种Resource都相应一个ResourceProvider,以下给出其相应关系: Resource.Type ResourceProvider Workflow WorkflowRes ...

  4. 怎样在Ubuntu Scope中定义设置变量并读取

    在本遍文章中,我们来解说怎么对我们的Ubuntu Scope进行设置.对Scope而言,有些时候我们希望可以使用设置来改变我们的显示.或对我们的搜索进行又一次定义.关于很多其它Scope的开发,请參阅 ...

  5. Android使用XUtils框架上传照片(一张或多张)和文本,server接收照片和文字(无乱码)

    Android上传图片,这里我使用了如今比較流行的XUtils框架.该框架能够实现文件上传.文件下载.图片缓存等等,有待研究. 以下是Android端上传的代码: xUtils.jar下载 Strin ...

  6. android apk 的root 权限和USB adb 权限的差别

    USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权限.通常假设adb shell 看到是: Android 4.0 以后 ...

  7. Md5加密秘钥加密哈希加密

    加密通用类: public class EncryptClass { /// <summary> /// 返回MD5加密字符串 /// </summary> /// <p ...

  8. 王磊:AI 时代物流行业的 OCR 应用

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ OCR 是人工智能里面非常重要的基础能力之一.腾讯云人工智能产品总监王磊,结合物流场景解读了OCR技术."OCR文本识别能够优化 ...

  9. 十一、Spring Boot 集成Shiro和CAS

    1.Shiro 是什么?怎么用? 2.Cas 是什么?怎么用? 3.最好有spring基础 首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程. 第二个流程是单纯使用Cas的流程. 第三个图 ...

  10. Elasticsearch过滤器——filter

    Elasticsearch中的所有的查询都会触发相关度得分的计算.对于那些我们不需要相关度得分的场景下,Elasticsearch以过滤器的形式提供了另一种查询功能.过滤器在概念上类似于查询,但是它们 ...