Please enable JavaScript.
Coggle requires JavaScript to display documents.
Java类和接口, 一个Java文件可以有多个class,但只能有一个被public修饰的class(除了内部类), 先执行初始化块,再执行构造方法…
Java类和接口
特殊类
内部类
定义在类内的类(一个)
匿名内部类
抽象类
声明关键字
静态声明static
静态常量
非静态方法不可使用
静态方法
允许直接访问,不需要new对象
静态初始化块
对象创建时自动执行,只执行一次
静态内部类
只能访问外部类的共享成员
权限声明
public
允许所有访问
private
只允许本类访问
protected
子类、本类、同包访问
default
本类、同包访问
终态声明final
变量
只能赋值一次,不可修改(编译时发现final就会将变量用它的值替代)
方法
(弃用)不可被继承,private可以隐式的指定为final
类
不可被继承
接口和抽象类的区别
接口只能定义静态常量,抽象类可以定义非静态常量
一个实体类可以继承多个接口,但只能继承一个抽象类
接口不能实现普通方法,抽象类可以/不可以实现具体的方法
(class)类是做什么的?
定义对象含有的变量
成员变量
局部变量
对象中存储的数据
定义对象含有的方法
普通方法
对象.方法---》调用
有参/有返回值方法
无参/无返回值方法
构造方法
有参构造方法
参数个数和类型不同可重载
无参构造方法
无构造函数时默认生成
特点:不能用返回值(void也不能有)
初始化块
创建对象自动执行的代码
调用执行的代码
(abstract)接口是做什么的?
定义静态常量(public static final)
定义抽象方法(abstract必须)可以为static
抽象声明
抽象方法
只有声明,没有方法的具体实现
抽象类
不能实例化对象,必须被继承使用
更新声明
default方法
更新接口时添加的新方法,允许旧类实现接口而不实现该方法。
可以直接在接口内实现,供没有定义的旧类直接使用。若类中实现了该方法则覆盖。
如果类实现了多个接口且拥有同名 default 方法:
2.必须重写子类 default 方法,通过 super 关键字明确实现哪个接口:
1.两个接口若存在继承关系,调用时优先使用子类方法
(package)包
(import)导包
同一存储路径(包)下的 java 文件不需要导入,可以直接调用。
已默认导入 java.lang 路径下所有 java 文件,包含 System、String、Object、Math 等常用类。
调用其他Java文件的类和接口时,需要导包
如果没有导入对应 java 文件,或者导入了多个同名 java 文件,在调用类 / 接口时需要标明路径。
一个Java文件可以有多个class,但只能有一个被public修饰的class(除了内部类)
先执行初始化块,再执行构造方法