ClassCastException :属于运行时期异常的一种; 代表"类转换异常"使用多态操作向下转型的时候(使用不当),
堆内存中 信息和栈内存信息没有子父关系
Animal a = new Cat() ; //堆内存是猫 猫是动物
//Cat c = (Cat)a; //还原成猫 猫是猫
Dog d = (Dog)a ;//语法没有问题,但是内存中有问题 (猫是狗,错误的)
3.什么是抽象类,抽象类的成员特点
抽象类如何实例化
有抽象方法(在具体的事物中才能能具体的行为)的类一定是抽象类;
public abstract 返回值类型(参数类型 形式名称.,...) ;
抽象类的成员特点:
成员变量:可以是变量,也是自定义常量
成员方法:可以存在抽象方法,也可以存在非抽象方法
构造方法:可以存在无参/有参构造方法;分层初始化:先父类初始化,然后再是子类初始化;
抽象类不能实例化:不能new对象,所以通过抽象类多态来实例化,通过具体的子类进行实例化
抽象类名 对象名 = new 具体的子类名() ;
4.什么是接口,接口和子实现类的关系是什么
接口:体现的是一种额外功能, 设计理念 "like a"的关系
接口和子实现类的关系:implments 实现
//接口interfaceMary{//成员方法:只能是抽象方法publicabstractvoidmary();}//子实现类classYouimplementsMary{public viod mary(){System.out.println("结婚了,很开心....");}}classTest{publicstaticvoidmain(String[] args){//接口比抽象类还抽象:抽象类都不能直接new对象,接口也不能
实例化
//接口多态:接口名 对象名 = new 子实现类名() ;Mary mary =newYou();
mary.mary();}}