Java的属性
1.封装
2.继承
概念
继承是面向对象的最显著的一个特征。继承是从已有的类(父类或超类)中派生出新的类(子类),新的类能吸收已有类的数据属性和行为,并能扩展新的能力(方法的覆盖/重修)。
- Java不支持多继承,一个类只能有一个父亲
- 父类是子类的一般化,子类是父类的特殊化
构造函数:
- 子类不能继承构造函数,子类可以通过super()显示调用父类的构造函数
- 创建子类时,编译器会自动调用父亲的无参构造函数
- 如果父类没有定义无参构造函数,子类必须要在构造函数的第一行代码使用super()显示调用
覆盖/重写:
发生在子类与父类之间
当子类需要修改父类的一些方法进行扩展,增大功能,就叫重修或覆盖。
也就是说子类中的方法与父类中继承的方法有完全相同的返回值类型、方法名、参数个数以及参数类型。但是内部的实现逻辑改变了。
当子类已经重写了父类中的方法后,再想要调用父类中的同名方法就直接用super关键字从子类中访问父类中的内容。
tring方法 所有类中都隐式的继承了这个方法
使用instanceof判断是否有继承关系
System.out.println(对象 instanceof 类名);
public class Peason(){
}
public class Student extends Peason(){
}
public class Teacher extends Peason(){
}
public class Test01(){
public static void main(){
Student student = new Student();
Teacher teacher = new Teacher();
System.Out.Println(teacher instanceof Peason);//ture
System.Out.Println(student instanceof Peason);//ture
System.Out.Println("=======================================");
Peason student = new Student();
Peason teacher = new Teacher();
System.Out.Println(teacher instanceof Peason);//ture
System.Out.Println(student instanceof Peason);//ture
}
}
3.多态
多态:一种表现形式,多种实现。
两种:编译时多态、运行时多态
1、编译时多态:具体表现为方法重载
重载:
方法名必须相同
参数必须不相同
2、运行时多态:具体表现为方法重写
多态的注意事项
- 多态是方法的多态,属性没有多态
- 父类和子类,有联系 类型转换异常(ClassCastException!)
- 存在条件:继承关系,方法需要重写
- 父类引用指向子类 Father f1 = new Son();
- 父类引用指向子类对象,父类可以调用自己的方法,和子类重写的方法,不可以调用子类独有的方法
- 不能重写的方法
- static 方法,属于类,不属于实例
- final 常量池
- private 方法
- 没有重写,没有多态