1. super关键字的具体使用
对super关键字的理解:super关键字表示:父类引用;在new子类对象时,会先创建父类对象,再创建子类对象;原因:每个构造方法的第一行,默认都会有一个隐式的super(),表示调用父类的无参构造;
1.1 概述:代表的是父类引用
1.2 作用:可以调用父类中的成员
1.3 使用:
调用父类构造方法
在子类中的构造中调用:super() -> 调用父类无参构造
在子类中的构造中调用:super(实参) -> 调用父类有参构造
调用父类成员变量: super.成员变量名
调用父类成员方法:super.成员方法名(实参)
2. this关键字的具体使用
1、this概述:代表的是当前对象(哪个对象调用的this所在的方法,this就代表哪个对象)
2、作用:
区分重名的成员变量和局部变量
调用当前对象中的成员
3、使用:
3.1 调用当前对象的构造:在构造中写
this():调用当前对象的无参构造
this(实参):调用当前对象的有参构造
3.2 调用当前对象的成员变量:this.成员变量名
3.3 调用当前对象的成员方法:this.成员方法名(实参)
4、注意:不管是super还是this,只要在构造中使用,都必须在第一行,所以二者不能同时手写出来
3. 继承的特点
1、继承只支持单继承,不能多继承
2、继承支持多层继承
3、一个父类可以有多个子类
4、 构造方法不能继承,也不能重写
私有方法可以继承,但是不能被重写
静态方法可以继承,但是不能被重写
4. 抽象类
4.1 抽象类概述
对于抽象类的理解:将子类中共性的方法抽取到父类中,但是每个子类对于该方法的实现逻辑是不一样的,此时共性方法抽取到父类中但是在父类中不能够确定该共性方法的实现逻辑,此时就可以将该方法定义为抽象方法,即该方法没有方法体;那么,抽象方法所在的类一定是抽象类;
关键字: abstract
抽象方法: 修饰符 abstract 返回值类型 方法名(参数);
抽象类:public abstract class 类名{}
注意:
1、抽象方法所在的类一定是抽象类
2、抽象类中不一定非得有抽象方法
3、子类继承父类之后,需要重写父类中所有的抽象方法,不然编译报错,除非该子类也是一个抽象类
4、抽象类不能new对象,只能通过new子类对象调动重写方法
抽象类的意义?
疑惑:之前在讲解继承的时候,继承的目的就是为了避免重复性的代码在子类中重复出现,所以将相同的成员抽取到父类中,子类继承父类,这样减少代码冗余;但是,这里在讲解抽象类的时候,即使将抽象方法抽取到父类中,每一个子类都还要去重写,那么抽取抽象方法的意义在哪呢?
意义:可以将抽象类看成是一类事物的标准,要求只要是属于这一类的,都必须要拥有抽象类中的方法,必须要给我实现,怎么证明拥有了,怎么证明实现了呢?-> 重写;至于这个方法怎么实现,就看子类重写之后怎么写方法体了;
4.2 抽象的注意事项
1、抽象类不能直接new对象,只能创建非抽象子类的对象
2、抽象类中不一定非得有抽象方法,但是抽象方法所在的类一定抽象类
3、抽象类的子类,必须重写父类中的所有抽象方法,否则,编译报错,除非该子类也是抽象类
4、抽象类中可以有成员变量,构造,成员方法
5、抽象类中可以有构造方法,是供子类创建对象时,初始化父类属性使用的