八,继承
- 1.子类可以继承父类所有的属性和方法
- 2.先执行父类的属性初始化 构造方法 再执行子类的属性初始化和构造方法
- 3.final:可以修饰属性,方法,类
final属性一旦赋值就不可以再更改
final方法不可以被子类覆盖,即子类不可重写
final类不可以被继承,即没有子类
- 4.super:调用父类的属性和方法
super.属性名 super.方法名
子类的构造方法默认隐式调用父类的无参构造方法,
若要调用父类有参的,要写在子类构造方法第一行
若父类没有无参构造函数,即父类有自己的有参构造函数,又未在子类调用,则会报错。
- 5.object类
若未写extends,则默认继承object类,其方法适用于所有类。
- 6.to string:返回类的地址
菜单栏source中有general to string方法,可以重写to string方法,
即输出类名时,不再输出字符串地址(哈希code),而是属性名和值
- 7.equals:返回两个类是否相等
比较的是地址,因为这是地址的引用,不能比较属性值是否相等
重写后就可以比较二者属性值是否相等了,(类对象是属性和方法名 类的对象是具体的变量值)
九,多态
- 1.继承是多态的基础
- 2.1引用多态:
父类引用(对象)可以指向本类/子类的对象
Animal animal1= new Animal(); Animal animal2 = new Dog(); Animal animal3 = new Cat();
- 2.2.方法多态:子类可以调用父类/本类重写的方法
animal1.eat(); animal2.eat(); animal3.eat();
但是父类的引用不可以调用子类的独有的方法
- 3.类型转换:
强制类型转换: 向下类型转换 比如水壶到杯子
隐式/自动类型转换:向上类型转换 比如杯子到水壶
为了防范出现错误,可以用instanceof来判断是否是某个类的实例,
Dog dog = new Dog();
Animal animal = dog; 自动类型转换
if(animal instanceof Cat){
Cat cat = (Cat)animal; 强制类型转换
}
else{
System.out.println(“无法进行类型转换”);
}
- 4.抽象:abstract
抽象方法只能声明,不需要实现
包含抽象方法的是抽象类
抽象类中可以有普通方法
抽象类不能直接创建,可以定义引用类
- 5.接口:interface
public interface 接口名 【extends 父类 】{
多个常量 (public static final系统会自动添加)
多个抽象方法
}- 【】里为可选项 extends 父类 implements 父接口
继承要在实现之前