多态: 
        事物的多种形态 
        前提条件: 
                有继承 
                重写 
                父类引用指向子类对象 
 
        多态中成员变量的访问特点: 
                编译看左边,运行看左边 
 
        多态中成员方法的访问特点: 
                编译看左边,运行看右边(动态绑定) 
 
        多态中静态成员方法的访问特点: 
                编译看左边,运行看左边 
                所以不算重写 
 
        基本数据类型的类型转换: 
                隐式转换: 
                        int a = 10; 
                        byte b = 20; 
                        a = a + b; 
 
                强制转换: 
                        byte b1 = 10; 
                        byte b2 = 20; 
                        byte b3 = (byte)(b1 + b2); 
 
        引用数据类型的类型转换: 
                向上转型: 
                        用父类引用指向子类对象,本质是缩小了访问范围 
                向下转型: 
                        用子类引用指向子类对象,本质恢复子类本来就应该有的访问范围 
 
        多态的好处和弊端: 
                好处: 
                        1、提高代码的复用性,可维护性 
                        2、提高代码的可扩展性 
 
                弊端: 
                        不能访问子类特有的成员 
 
                instanceof 用来判断引用所代表的对象的类型,返回值为boolean 
                ClassCastException 类型转换异常 
 
抽象类: 
        看不见摸不着没有具体内容的 
                 
        抽象类的特点: 
                1、定义方法: 
                        抽象类的定义方法; 
                                abstract class 类名 { 
                                } 
                        抽象方法的定义: 
                                public abstract void 方法名(); 
 
                2、抽象类的抽象方法的关系: 
                        抽象类中不一定有抽象方法,抽象方法一定在抽象类中 
 
                3、抽象类的实例化 
                        使用多态的方法来解决,用子类来进行实例化 
 
                4、子类命运: 
                        还是抽象类 
                        重写抽象类中所有的抽象方法 
 
        抽象类中成员的特点是什么: 
                成员变量: 
                        可以是变量,也可以是常量,不能被抽象,不能被abstract修饰 
 
                构造方法: 
                        必须有,用于子类继承时候,创建子类对象,对抽象类中的成员变量进行初始化 
 
                成员方法: 
                        可以抽象,也可以不被抽象 
                        抽象方法,非抽象子类必须重写此方法 
                        不抽象方法,子类继承,提高代码的复用性 
 
        面试题: 
                abstract不能和那些关键字共存: 
                        static,static修饰的方法可以被类名.的方式来调用,调用一个abstract修饰的方法,没有意义 
                        final,final修饰方法不能被重写,abstract修饰的方法必须被重写 
                        private,private修饰的方法无法被子类看到,也无法重写,abstract修饰的方法必须重写 
 
接口: 
        接口的特点: 
                接口的定义: 
                        interface 接口名 { 
                        } 
 
                实现这个接口: 
                        class 类名 implements 接口名 { 
 
                        } 
 
                接口的实例化: 
                        使用多态来解决,使用其实现类来进行实例化 
                         
                接口的实现类: 
                        抽象类,意义还是挺大的 
                        具体类,推荐 
 
        接口成员的特点: 
                1、成员变量只能是常量,默认的修饰符:public static final,建议手动写出 
                2、构造方法:没有,干爹 
                3、成员方法;都是抽象的,默认的修饰符:public abstract,建议手动写出 
 
        类与类: 
                继承,只能单继承,可以多层继承 
        类与接口: 
                实现关系,可以单实现,也可以多实现 
                还可以在继承一个类的同时,实现多个接口 
        接口与接口: 
                继承关系,可以单继承,可以多继承,可以多层继承 
 
        抽象类与接口的区别: 
                1、成员变量:接口必须是常量,抽象类可以是常量,也可以是变量 
                2、构造方法:接口没有,抽象类有 
                3、成员方法:接口的成员方法必须是抽象,抽象类可以抽象,也可以不抽象 
 
                设计理念的区别: 
                        抽象类:is a的关系,该体系的共性功能 
                        接口:like a的关系,定义一些扩展功能 |   
        
 
    
    
    
     
 
 |