继承
多个类中存在相同属性和行为时 将这些内容抽取到单独一个类中 那么多个类无需再定义这些属性和行为 只要继承那个类即可
多个类可以称为子类 单独这个类称为父类 超类或者基类
子类可以直接访问父类中的非私有的属性和行为
class People {
private String name;
private int age;
public void eat(){}
public void sleep(){}
}
class Student {
private String name;
private int age;
private int grade;
public void eat(){}
public void sleep(){}
public void study(){}
}
由此编程过于繁琐 采用继承
class People {
private String name;
private int age;
public void eat(){}
public void sleep(){}
}
class Student extends People{
private int grade;
public void study(){}
}
Java中类的继承只能是单继承(单根继承) 即一个类只能继承一个父类 但是一个类可以由多个类来继承它
Java会给每一个没有设置父类的类,自动添加一个父类 Object
子类继承父类后 继承到了父类所有的属性和方法
基类的初始化顺序
静态变量 静态块 实例变量 实例块 构造方法
子类的初始化顺序
父类静态变量 父类静态块 子类静态变量 子类静态块 父类实例变量 父类实例块 父类构造方法 子类实例变量 子类实例块 子类构造方法
访问修饰符
Super关键词
Super(); 调用基类的无参构造方法
调用基类的方法 super.
同包不同类 | 不同包 子类 | 不同包 非子类 | |
private | × | × | × |
protected | √ | √ | × |
public | √ | × | × |
默认 |
实例识别 (instanceof)
实例识别(instanceof) 是用来判断一个对象的引用是否为某一类型
//基类
class BasicClass {
}
//子类A
class A extends BasicClass {
}
//子类B
class B extends BasicClass {
}
以上情况,如果无法确定基类引用到底是类A的对象引用还是类B的 对象引用时,就可以用instanceof保留字进行识别和区分:
BasicClass basicClass = (BasicClass) obj.getObjectOfAorB();
if (basicClass instanceof A) {
} else if (basicClass instanceof B) {
} else {
}
这样就可以确定在运行时刻 基类BasicClass的引用中 所指向的对象实例