一、多态
1、引用多态
父类的引用可以指向本类的对象
父类的引用可以指向子类的对象
2、方法多态
父类创建本类对象时,调用的方法为本类的方法
父类创建子类对象时,调用的方法为子类重写的方法或者继承方法
3、子类中特有的方法,不可以被父类的对象引用
二、引用类型转换
1、向上类型转换,是小类型到大类型
2、向下类型转换,是打类型到小类型
3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题
Dog dog = new Dog();
Animal animal = dog;//向上类型转换
Dog dog2 = (Dog)animal;//向下类型转换
Cat cat = (Cat)animal;//出错cat 和dog不是同一类型
if (animai instaneof cat )//判断是否同一类型,是返回真,不是返回假
三、抽象类
1、应用场景:
a、在某些情况下,某个父类只知道七子类应该包含怎样的方法,但是无 法准确 知道这些子类如何实现这些方法
b、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板, 从而避免子类设计的随意性
2、使用规则
a、abstrac定义抽象类
b、abstrac定义抽象方法,只有声明,不需要实现
c、包含抽象方法的类是抽象类
d、抽象类中可包含普通方法,也可以没有抽象方法
e、抽象类不能直接创建,可以定义引用变量
四、接口
1、概念:类是一种体现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,他只规定这些类里必须提供某些方法
2、接口定义:和类定义不同,定义接口不在使用class关键字,而是使用interface关键字
3、语法格式
【修饰符】 interface 接口名 【extends 父接口1,父接口2....】
{
常量和抽象方法
}
4、使用接口:一个类可以实现一个或多个接口,实现接口使用implements关键字
a、继承父类实现接口的语法
【修饰符】 calss 类名 extends 父类 implements 接口1,接口2...
{
类体部分
}
注意:继承父类必须在实现接口之前
5、接口命名习惯以 “I” 开头
6、定义一个IPlayGame接口
public interface IPlayGame{
public void playGame();
}
7、实现接口
public class Telphone implements IPlayGame{
public void playGame(){
System.out.println("实现接口");
}
}
8、接口的引用
IPlayGame ip1 = new Telphone();
ip1.playGame();//输出"实现接口"