黑马程序员技术交流社区

标题: Java基础笔记之九 [打印本页]

作者: 啊海    时间: 2016-4-6 23:58
标题: Java基础笔记之九
多态:
        事物的多种形态
        前提条件:
                有继承
                重写
                父类引用指向子类对象

        多态中成员变量的访问特点:
                编译看左边,运行看左边

        多态中成员方法的访问特点:
                编译看左边,运行看右边(动态绑定)

        多态中静态成员方法的访问特点:
                编译看左边,运行看左边
                所以不算重写

        基本数据类型的类型转换:
                隐式转换:
                        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的关系,定义一些扩展功能




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2