众所周知,java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】 
通过几天的初步学习,加上C++的基础,对三大特征有了进一定的认识和了解,现将自己这几天的学习笔记做一下归纳总结: 
  
一、封装 
        对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性) 
        具体来说: 
                1.属性: 私有 private(提供set和get方法) 
                2.方法: 公开或私有public/private 
                3.方法声明 --> 公开 
                  方法实现 --> 隐藏 
                 实现改变时,对对象的使用者没有影响。 
  
二、继承 
              共性放到父类,特性放到子类;父类 --> 子类,其实就是特殊 --> 一般 
        1.关键字: extends  例如:Dog extends Animal{} 
        2.java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构), 
          C++中是单继承 
          java中要实现多继承,通过接口来实现。 
        3.父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。 
        4. 
                          访问权限                     继承  
         private        本类内部                   不能继承         
           default        本类+同包              同包子类可以继承            
           protected      本类+同包+不同子包         可以继承  
           public         公开                       可以继承 
  
        5.构造对象过程 
                   (1)分配空间 
                   (2)递归地构造父类对象 
                                a. 父类 初始化属性 
                                b. 父类 构造方法 
                   (3)初始化属性 
                   (4)调用构造方法 
  
        6.super   
               用法: 
                   super()  调用父类的构造方法,只能出现在构造方法的第一行 
                   super.方法名   super表示父类的对象,通过它去调用父类的方法 
               注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的 
                     第一句既不是this(),也不是super()时,那么就会在这里隐含的调用 
                     他的父类的无参的构造方法,即隐含的有super()。 
  
三、多态 
            运行时多态。 
            子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。 
        1.多态原则: 
                  (1)对象类型不变 
                  (2)只能用引用调用其引用类型中定义的方法 
                  (3)运行时,根据对象的实际类型去找子类覆盖之后的方法 
             例子: 
                  有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有 
                  eat()方法,sleep()方法中睡6小时,还有wangwang()方法。 
                  现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。 
        
          2.对象的强制转换 
                 格式: 引用 instanceof 类型 
                        引用所指的对象是否鱼类相符,返回值boolean值。 
                 用法: 
                       Animal a=new Cat(); 
                       if(a instanceof Dog) 
                       { 
                          Dog d=(Dog)a; 
                          d.wangwang(); 
                        } 
                 说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条) 
  
          3.多态的灵活变换 
                  (1)用于参数列表上: 
                               public void m(A a){} 可以用A类的任何子类对象作为参数 
                  (2)用在返回值上: 
                              public A m(){}  这个方法可能返回A类的任何子类对象 |   
        
 
    
    
    
     
 
 |