类
1. 修饰符权限控制表
修饰词 | 本类 | 同一个包的类 | 继承类 | 其他类 |
---|---|---|---|---|
private | √ | × | × | × |
无(默认) | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
2. 构造器
- 构造器名和类名相同,没有返回值。
- 使用new关键字,必须要有构造器,本质是在调用构造器。
- 一个类默认会生成公共的无参构造器。
- 一旦定义了有参构造,无参构造器就必须显式定义。
2.1. Instanceof 关键字
它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
父类转子类需要进行强制类型转换,这时候可以用
instanceof
进行判断。子类转父类不需要进行强制类型转换。
instanceof
左右的参数应该是父子关系。
A instanceof Object; // true,因为所有的类都继承Object
不同分支下的类在编译的时候就会报错。
- 可以利用
instanceof
关键字判断是否可以进行强制类型转换。
3. 补充
引用对象的创建会在栈中创建引用变量名,并指向堆中创建的引用对象空间的地址。
static{ // 静态代码块 // 在使用构造器之前会使用且只会调用一次 // 在匿名代码块前会调用 } { // 匿名代码块 // 在调用构造器之前会调用 }
Java不支持多继承,即
extends
只支持一个类。一个类可以实现多个接口,从而实现多继承。
接口中定义的所有方法都是抽象的
public abstract
,定义的所有值都是常量public static final
。一个Java类中可以有多个class,但只能有一个public class。
在静态类或静态方法中无法访问类的非静态属性或方法。
final修饰的类的特点:不能被继承,没有子类。final类中的方法默认是final的。
final关键字有这是无法改变的或者终态的含义,它可以修饰非抽象类、非抽象类成员方法和变量。
- final类不能被继承,没有子类,final类中的方法默认是final的。
- final方法不能被子类的方法覆盖,但可以被继承。
- final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
- final不能用于修饰构造方法。