面向对象三大特征:封装,继承,多态
什么是继承,简单来说当多个类存在相同属性或行为时,将这些内容抽取到单独的一个类中,那么这几个类就无需再定义这些属性和行为,只要继承那个类即可。
继承有哪些好处:
继承的出现提高了代码的复用性。
继承的格式:
public class 子类 extends父类{}
继承中成员变量的访问特点:等号左边是谁,访问的就是谁,没有则向上查找。
继承中成员方法的访问特点:new的是谁,访问的就是谁,没有则向上查找。
当子类继承了父类,就继承了父类的所有的方法和属性。
父类中声明为private的属性或方法,子类继承以后,因为封装性的影响,不能直接调用,但仍然获取;
访问同名的三种变量:
super:父类变量
this:本类成员变量
直接访问:局部变量
super关键字的三种用法:
super.父类成员变量;//写在子类的成员方法中
super.父类成员方法;//写在子类的成员方法中
super();//访问父类的构造方法,写在子类的构造方法中。
注意事项:
1.不能和this()同时存在
2.必须是第一个语句
3.如果一个类的构造方法中,没有显示的写super(参数);则默认赠送一个super();
如果显示的写了一个super(参数);则不再赠送。
this关键字的三种用法:
this.本类成员变量;
this.本类成员方法();
this(参数);//访问本类的"其他"构造
注意事项:
1.写在构造方法中
2.只能是第一个语句,不能和super()同时存在
3.构造方法不能递归
创建子类对象的时候,一定会调用到父类的构造方法。
java中继承的特点:
单继承,一个子类只能有一个父类
一个父类可以被多个子类继承。
java中可以多级继承
如果没有显示的声明一个类的父类的话,则此类继承java.lang.Object类。
所有的java类(除java.lang.Object类)都直接或间接的继承与java.lang.Object类
方法的覆盖重写:
在子类中可以根据需要对从父类中继承来的方法进行改造,也称
为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
1.子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
2. 子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
3. 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限
子类不能重写父类中声明为private权限的方法
4. 子类方法抛出的异常不能大于父类被重写方法的异常
子类与父类中同名同参数的方法必须同时声明为非static的(即为重写),或者同时声明为static的(不是重写)。因为static方法是属于类的,子类无法覆盖父类的方法。