接口
- 引用类型,只能包含常量和抽象方法,不能被实例化(new 对象)
需要被实现,实现类:必须重写所有抽象方法
一个类可以实现多个接口,用逗号来分隔,若又继承又实现,应先继承后实现
接口可以继承接口 - 意义:用来实现多继承,是一个标准、规则
不理解得东西暂时搁置它,不用去纠结
多态(多种形态,多种状态)
- 意义:
- 行为的多态:同一类型的引用指向不同的对象时,有不同的实现(方法)。-------------所有抽象方法都是多态的
-----行为的多态:cut()、getImage()、move(); - 同一对象(我)被造型为不同的类型时(java程序员、儿子),有不同的功能(写开发,做家务)------------所有对象都是多态的
- 对象的多态:
- 向上造型/自动类型转换:
- 父类的引用指向子类的对象
- 能点出来什么,看引用类型
- 能造型成为的数据类型有:父类+所有实现的接口
person p = new Student(); //大(人) 转 小(学生) 向上造型
- 强制类型转换 :
- 引用所指向的对象,就是该类型
- 引用所指向的对象,实现了该接口或继承该类型
- 强转时若不符合如上条件,则发生 ClassCastException 异常
- 行为的多态:同一类型的引用指向不同的对象时,有不同的实现(方法)。-------------所有抽象方法都是多态的
Aoo o = new Boo();//向上造型,父类AOO转向子类BOO Boo是对象。 o是还是Aoo的类型
//引用o (Aoo类型的)该类型 指向的对象就是Boo类型(强转); 条件满足可以强转
//引用所指向的对象,就是该类型
Boo o1 = (Boo) o;//强制类型转换 大的不能转小的, Boo o1 = o; //类型o是AOO的,所以编译错误
//引用o指向的对象(new Boo)实现了Inter接口(强转Inter)Boo实现了Inter满足条件,可以强转
Inter o2 = (Inter) o;//前面的指向的本身的类型Inter = 就是 指向Inter的类型 ,引用就是引用成本身的类型。所以强制类型转换
//Coo o3 = (Coo)o;//运行时会发生类型转换异常ClassCastException
if (o instanceof Coo){
Coo O4 = (Coo) o;
}else {
System.out.println("o不是Coo的类型");
}
普通方法只具备一种形态(方法),
/**行为的多态*/
//person人 这是同一类型父类 ·指向不同的对象new 理发师... 有不同的实现方法(来调用方法,每个重写的方法不同,且抽象类的方法必须重写) p1.cut(){剪发}。
person p1 = new 理发师;
person p2 = new 外科医生;
person p3 = new 演员;
p1.cut();//剪发
p2.cut();//治病
p3.cut();//演习
abstract class person{
abstract void cut()
}
class 理发师 extends person{
void cut(){剪发}
}
class 外科医生 extends person{
void cut(){治病}
}
class 演员 extends person{
void cut(){演习}
}
能用父类绝不用之类(接口也是父类interface)