一,继承:类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。提高代码的复用性。extends的意思是“扩展”。子类是父类的扩展。
继承的好处:
1,方便修改代码。
2,减少代码量。
继承的方法:编写父类,编写子类继承父类。(一个子类只能继承一个父类)
二,super是直接父类对象的引用(可以通过super来访问父类中被子类覆盖的方法或属性。)
普通的使用方法: 没有顺序限制。可以随便调用。
构造函数中:任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(...);那么
Java默认都会调用super();作为父类的初始化函数。 所以你这里的super();加不加都可以。
子类访问父类成员: 使用super关键字代表父类对象。访问父类构造方法 :super(); super(name);
在子类构造方法中调用且必须是第一句。访问父类属性 :super.name; 访问父类方法 :super.print();
子类对于父类资源的继承,以及不能被继承的父类成员:
1,不能直接访问private成员,
2,子类与父类不在同包,使用默认访问权限的成员。
3, 构造方法不能被继承。
多重继承关系的初始化顺序:1、父类属性---->2、父类构造方法---->3、子类属性---->4、子类构造方法。
java中的多继承,可以通过接口来实现, 如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。
三,访问修饰符protected
1,可以修饰属性和方法,
2,本类、同包、子类可以访问
四,方法重写
1、在子类中可以根据需要对从基类中继承来的方法进行重写。
2、重写方法必须和被重写方法具有相同方法名称。参数列表和返回类型。
3、重写方法不能使用比被重写方法更严格的访问权限。(由于多态)
构造方法在重写不能被继承,因此不能重写
方法重写的规则:1, 方法名相同, 2, 参数列表相同, 3,返回值类型相同或者是其子类;,4, 访问权限不能严于父类。
super关键字来访问父类的成员
1,super只能出现在子类的方法和构造方法中
,2,super调用构造方法时,只能是第一句
,3,super和this不能同时出现在构造方法中
,4, super不能访问父类的private成员,
5, super和this都不能再static方法中
五,抽象类,抽象方法。
1、创建抽象类的时候需要添加 abstract 的关键字。
2、不能进行实例化,也就是不能new对象。
3、抽象类中的某些方法需要子类进行更丰富的实现,父类实现没有意义,此时可以将抽象类中的方法定义为抽象方法,没有具体的实现,只包含方法名称,返回值,参数列表,访问修饰符。
4、使用abstract关键字修饰的方法叫做抽象方法,可以不写方法的实现。
5、子类在继承抽象父类的时候,必须要将父类中的抽象方法进行实现或者将子类也定义为抽象类。
6、有抽象方法的一定是抽象类,但是抽象类中不一定包含抽象方法。
六,fianl的使用:1,final可以修饰变量,。2,表示变量的值不可变。3, final可以修饰方法。4,表示方法不可以被重写。5,final可以修饰类:6,表示类不可以被继承。
七,Object类
Object类是所有类的父类,:1, 一个类如果没有使用extends显性的继承另外一个类,那么这个类就继承自Object类,2,源码解析(涉及到Object中常用的10个方法):getClass()、hashCode()、equals(Object)、clone()、toString()、notify()、notifyAll()、wait()、wait(long)、wait(long,int)
对象的比较—==和equals()
1、==:
---- 比较两基本类型变量的值是否相等。
---- 比较两个引用类型的值即内存地址是否相等,即是否指向同一对象。
2、equals() :两对象的内容是否一致.
3、自定义类须重写equals(),否则其对象比较结果总是false。通过阅读Object源码可知,equals()方法的实现是用==完成的。