面向对象三大特征

1.封装:

            1.1作用:做到程序的高内聚和低耦合; 尽量把模块的内部数据.功能实现隐藏在模块内部,然后暴露少量的的方法给外部使用

            1.2访问控制符:  用来修饰类和成员

                private

                default

                protected

                public

外部类:只能使用public和default,因为外部类使用private和protected没有意义

内部类:(inner class),也称为嵌入类(nested class),它是定义在其他类的内部。内部类作为其外部类的一个成员,与其他成员一样,可以直接访问其外部类的数据和方法。 四种都可以用.

2.继承:  

    tips:如果父类的实例变量或者实例方法 不能被访问到,会被继承但是会隐藏

            如果子类的实例变量与父类的实例变量重名,父类的实例变量也会被隐藏


    1.单继承:每个子类只能有一个直接父类

    2.不能获得父类的构造器

    3.继承只针对实例方法和实例变量;

    4.子类对父类的方法重写

         a.方法名和参数列表必须一致

          b.不能降低方法的访问范围

          c.不能提高返回类型1.返回类型是对象:必须是本身或者子类2.返回类型是基本数据类型的必须保持一致

          d.父类方法是private修饰的,不能被重写

       5.使用super来调用父类中被隐藏的实例变量或者实例方法;super和this一样都是针对对象,不能在static方法中使用

        6.继承会破坏封装,所以当子类需要增加属性,或者增加重写方法时,才用继承

                        --->很多时候可以利用组合来实现类的复用,而且并不会加大系统开销

3.多态

    引用变量---->编译时类型   和  运行时类型

编译时类型:声明改变量时决定

运行时类型:实际赋给该变量的对象决定

tips:1.对象的实例变量不具备多态

        2.引用变量在编译阶段只能调用其编译时类型所具有的方法和变量.

        3.引用变量的强制类型转换

           a.基本类型之间的转换只能是数值类型的转换:byte,short,int,long,char,double,float

            b.引用类型的强制转换1.子类转父类总是能够成功;

                                               2.父类转子类必须是其运行时类型为该子类类型

                                                3.使用instanceof 来防止ClassCastException;




你可能感兴趣的:(面向对象三大特征)