【super】 【this】【抽象类】【接口】【三大特征-多态】【引用类型的转换】
super和this的含义
super:代表父类的存储空间标识(可以理解为父类的引用)
this:代表当前的引用(谁调用就是谁)
super和this的用法
super
1.访问父类的成员变量
super.成员变量;
super.成员方法();
2.访问父类的构造方法
super(....) 父类的构造方法
3.继承关系中,父类的构造方法的访问特点:
子类构造方法当中有一个默认的隐式的super()调用,所以一定是先调用父类的构造,后执行的子类构造
子类构造可以通过super关键字来调用的重载构造
总结:子类必须调用父类的构造方法,不写则争讼super();写了则用写的指定的super调用,super只能有一个,还必须是第一个。
this
1.访问当前的成员
this.成员变量;
this.成员方法;
2.访问当前类的构造方法
this(...)当前类的构造方法
this()构造方法在调用是不能形成闭合
this(...)在调用时也必须是构造方法的第一句,唯一一个
super(....)和this(....)两种构造方法调用时,不能同时使用
继承的特点
1.java语言只支持单继承,不支持多继承
2.java语言只支持多级继承(继承体系)
3.顶层父类是Object类,所有的默认都继承Object类
4.子类和父类是一种相对的概念(object除外)
抽象类
抽象的概述
父类当中的方法,被他的子类们重写,子类的各自实现又不一样。那么父类的方法声明和方法,只有声明还有意义,而方法体内容则没有存在的意义。我们把这种没有方法体内容的方法称为抽象方法。java语言规定,如果一个类包含了抽象的方法,那么该类必须是一个抽象类。
定义
抽象方法:没有方法体的方法
抽象类:包含抽象方法的类
abstract关键字的使用格式
抽象方法
使用abstract关键字修饰成员方法,该方法就称为抽象方法,抽象方法只包含一个方法名,而没有方法体。
定义格式
修饰符 abstract 返回值类型 方法名(参数列表);
示例代码:
public abstract void run();
//吃饭的抽象方法
public abstract void eat();
//动物跳跃抽象方法
public abstract void jum();
抽象类
如果一个类包含了抽象方法,那么该类就是一个抽象类。
定义格式:
修饰符 abstract class ClassName{
}
示例代码:
public abstract class Animal{
//奔跑的抽象方法
public abstract void run();
}
抽象类的使用
继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为一个抽象类。
注意事项:
关于抽象类的使用,需要注意的事项:
1.抽象类不能创建对象,如果创建对象,编译无法通过。只能创建其非抽象类的对象
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
4.抽象类的子类,必须重写父类中的所有的抽象方法,否则编译无法通过,除非该子类也是抽象类。
抽象方法就是在方法上面添加abstract关键字,去掉括号,添加分号
抽象类:抽象类所在的类,必须是一个抽象类,只需要在class前面添加abstract即可
如何使用抽象方法:
1.不能直接创建new抽象类对象
2.必须用一个子类来继承抽象父类
3.子类必须重写父类当中的所有的抽象方法
4.重写实现:子类重写父类当中抽象方法,去掉抽象方法当中的abstract关键字,然后添加
5.创建子类对象进行使用
6.方法重写,是子类对父类的抽象方法的完全实现,我们将这种方法重写操作 ,也叫做【实现方法】
@Override //重写在jdk1.5之后出现的
inherited:继承