面向对象(多态、抽象类、接口)

来源:互联网 发布:sql server 2008r2 编辑:程序博客网 时间:2024/05/18 15:30
今天休息一天,昨天上课的时候,刚开始讲父类引用指向子类对象的时候,怎么也听不进去,吸收不了知识,因为我总在想到底为什么访问变量要看左边,访问方法要看右边,总是想不通内存图里怎么走的,感觉要一点都学不下去似的,后来我也不想了,然后就死记这个结论,还算可以,能够在遇到此类的问题的时候,知道该看哪里运行哪里编译,然后就是感觉,现在的话想要把什么都弄明天有点不现实,时间和精力都不允许,所以,能快速吸收消化的就赶紧吸收了,不要因为纠结那么一点点为什么,把其他的知识点扔一边不去管,这也算是昨天上课的一点感悟吧。然后下边是昨天的总结,感觉自己语言组织能力太差了,光靠自己想东西来总结有点头疼,而且脑子会很空,所以参考着老师的总结写完了,相当于又复习一遍吧
一、多态
        多态就是一个事物有多种状态,比如(水:液态、固态、气态)
        多态的三个前提:
                1.有继承关系
                2.方法重写
                3.父类引用指向子类对象
        父类引用指向子类对象:
                1.访问变量:编译看左边,运行看左边
                2.访问成员方法:编译看左边,运行看右边
                3.访问静态方法:编译看左边,运行看左边
                调用静态方法:可以通过类直接访问,也可以通过
                对象访问,但本质是类名访问,所以调用静态方法
                不存在多态,这个是一个假象。静态方法不算方法的重写
        类型提升:
                向上提升:小类型向大类型转换,父类 对象名 = new 子类();
                向下转型: 父类引用上进行强制转换,子类 对象名 = (子类)父类对象名;
        类型提升解决了多态的弊端,父类不能访问子类的独有的方法
        多态的好处和弊端:
                1.提高代码的维护性,由继承保证,大量的代码写在了父类中
                2.提高程序扩展性:由多态保证
                3.多态中父类不能访问子类中独有的方法
二、抽象类
        抽象abstract,不是具体的一个物体,属于一类,要用抽象类来定义,在以后的工作中要考虑是
        用抽象还是普通类
        抽象类的注意事项:
                有构造方法,不能进行实例化,要由具体的子类实例化,用多态实现
                抽象类不一定有抽象方法,但是有抽象方法的类一定是抽象类
                抽象类的成员:成员变量可以是变量,也可以是常量
                                成员方法:可以是普通方法,也可以是抽象方法
                抽象类的子类可以有两种,一种可以是抽象类,一种可以是普通类,但是普通类要重写父类里的抽象方法
        抽象类也可以有父类
        abstract不能和哪些关键字一起用?
                1.private:抽象类,希望别人实现方法,被private修饰会冲突
                2.final:被final修饰以后不能重写方法
                3.static
三、接口
        接口 interface,可以给一个类提供而外的功能,使用 implement 实现接口,也算是对继承只能单继承弊端的一个解决方法
        接口中的成员只能是常量和抽象方法,要实现接口就要全部实现抽象方法
        接口是能力的扩展,不会对本质产生影响
        比如一个门,可以在门的基础上添加门铃,门铃就可以看作是对门能力的扩充,门铃就是一个接口
        接口的注意事项:
                接口主要是对能力的扩充,没有new构造方法
                定义的变量在接口里会变成常量,所以标识符所有字母都要大写,有个隐藏的 public static final
        java源码中很多都是用接口来写的,因为java不受行业约束
        类和类的关系:
                继承关系,只能单继承,不能多继承,能多层继承,不能多重继承
        类和接口的关系:
                实现关系,类来实现接口的方法,单实现也可以多实现
        接口和接口的关系:
                可以继承,多继承(没有讲)
        抽象类和接口关系:
                实现接口
        抽象类可以有变量、常量、成员方法、抽象方法
        接口只能有常量和抽象方法
0 0
原创粉丝点击