一、继承
1、定义格式:
public class 子类类名 extends 父类类名 { }
2、必然包含子类与父类才可以谈得上是继承。
3、extends作为Java中的关键字,表示子类与父类之间的继承关系
4、Object类作为Java中一切类的父类。
1)但某一个类没有明确表明继承哪个父类时,Object类就是它的父类。
若说明了继承某个父类,则称该类是间接继承Object类。
5、子类一旦继承父类,即拥有了父类中的除被private修饰的一切方法和成员变量;
同时子类还可以添加自己的方法和成员变量。
形象地描述为黑发(父类的成员变量)父亲(父类)的黑发(子类的成员变量)儿子(子类),今年1岁(子类的成员变量)了,在学习爬行(子类的方法)。
6、父类中被final修饰的类无法被继承,更无法被重写。(因为根本没有被子类继承过去。)
7、一个子类可以被其他类继承。
8、“Java中只有单继承,没有多继承。也就是一个子类只能继承于一个类,拥有一个父类。”
9、通过super关键字可以表示当前类的父类的对象,并且在子类中使用父类的对象。
与this的区别:this表示的是当前类的对象
10、方法重写:子类继承了父类的方法后,可以对父类的方法进行重写。但重写的方法必须与父类中被重写的方法的名称、参数列表、返回值一模一样。
区别于方法重载:方法重写涉及两个类,一个父类,一个子类。
方法重载指在同一类中多个方法的方法名相同,但参数的数量及类型不相同。
二、多态
1、定义:同一个类中有多个对象,它们的同一个行为有不同的实现方式,并有不同的实现结果。
2、存在条件:
“
1)必须含有继承或者实现关系(实现这种关系后面会讲)
2)调用相同的方法,而执行不同的代码,产生不同的结果(方法的重写)
3)父类的引用可以指向子类的对象
”
三、对象的上下转型
1、向上转型:子类对象转为父类对象,这个转型是安全的,但是可能会丢失方法。
2、向下转型:父类对象转为子类对象,这个转型不要安全,需要instanceof关键字来协助转换。
一般采用if条件语句:
if(父类对象 instanceof 子类类名){ 子类对象=(子类类名)父类对象; }else{ System.out.println("错误"); }该代码的意思是:如果能够实行向下转型则转型成功,如果不能则输出“错误”。
四、动态绑定与静态绑定
1、静态绑定
1)该绑定是程序编译时进行的。即编译时就可以确定条用的方法属于哪个对象。
2)“Java中的构造方法和被final、static或者private修饰的方法都是静态绑定”
2、动态绑定
1)该绑定在程序运行时进行的,“根据变量的实际引用类型决定调用哪个方法
”。
3、“多态是基于对象的动态绑定特性”
三、补充
如果没有明确指明构造方法,默认每个类中有构造方法,并且构造方法如下:
public 类名(){ }