JAVA學習筆記——JAVA基礎文法(三)——物件導向三大特徵

來源:互聯網
上載者:User

一、封裝

   功能:其實就是實現代碼的複用,屏蔽一些細節

    比如下面這個例子:   我在類Person裡面封裝了一個方法public void pname(){}這樣的話在main方法裡面就不用重複使用System.out.println();這句話了,避免了代碼的重複使用,成程式看起來比較簡潔

public class test{  public static void main(String agrs[]){      Person p1 = new Person();      p1.name = "jack1";      Person p2 = new Person();      p2.name = "jack2";      Person p3 = new Person();      p3.name = "jack3";      Person p4 = new Person();      p4.name = "jack4";            p1.pname(p1);      p2.pname(p2);      p3.pname(p3);    p4.pname(p4);  }}class Person{  String name;  public void pname(Person person){    System.out.println(person.name);  }}

 

二、繼承

  概念:就是指對象與對象之間的一種關係

  作用:代碼的複用、功能的擴充

  在JAVA中使用extends關鍵字來表示兩個類的繼承,當子類繼承了一個父類(基類、超類)的時候,子類自動擁有父類的所有成員。

  1、方法的重寫(voerread)

    是發生在繼承關係中的,在父類中被重寫的方法和子類中重寫的方法必須有相同的方法名、相同的傳回值類型、相同的參數列表,子類中重寫的方法不能擁有比父類中更加嚴格的存取修飾詞

    例如下面這個簡單的例子:

        

public class test{            public static void main(String[] args){                        Animel animel = new Animel();                animel.name = "mouse";                animel.age = "12";                    animel.named();                    Cat cat = new Cat();                cat.name = "cat";                cat.age = "13";                cat.sex = "boy";                cat.named();                    }        }        class Animal{            String name;            String age;            public void named(){                System.out.println("name is:" + name + "it is age is :" + age);            }        }        class Cat extends Animal{            String sex;            public void named(){                System.out.println("name is:" + name + "it is age is :" + age + "sex is " + sex);            }        }

 

  2、方法的重載(overload)

    發生在同一個類當中,必須擁有相同的方法名,可以擁有不同的傳回值類型,但是必須擁有不通的參數列表

    比如下面這個簡單的例子加以理解:

      

public class test{          public static void main(String args[]){              Numbsum bsum = new Numbsum();              bsum.sum(20);              bsum.sum(20,30);              bsum.sum(20,30,40);          }      }      class Numbsum{          public void sum(int a){              System.out.println(a);          }          public void sum(int a,int b){              System.out.println(a+b);          }          public void sum(int a,int b,int c){              System.out.println(a+b+c);          }      }

 

 

  3、Super關鍵字

    相當於當前父類對象的引用,每一個子類的對象中都有父類的對象,因為子類自動擁有父類的所有成員;JAVA在構建子類的對象的過程中,要先構建父類的對象,然後再建立子類的對象。

    下面這個架構圖把這個抽象的概念形象化的表示出來了:

                                  圖  1

    注意:1)、當子類的成員變數和父類的成員變數重名時,需要訪問父類的成員變數的時候使用  super.成員變數名   來調用

       2)、重寫的過程中,子類重寫的方法需要調用父類被重寫的方法的時候使用  super.方法名

       3)、如果父類中沒有無參數的構造方法時,是不能成功建立子類的對象的,需要在子類構造方法中手動添加父類的構造方法 super.() 

        如下簡單程式碼說明其原理:

public class test{    public static void main(String[] args){        Student person = new Student();    }}class Person{    public Person(int num){        }}class Student extends Person{    public Student(){        super(100);        System.out.println("子類對象成功建立");    }}

 

    注意:繼承中子類建立對象的一些細節過程

        1)、先建立父類對象再建立子類對象

        2)、JAVA是用構造方法來建立對象的

       3)、JAVA要先調用父類的構造方法,再調用子類的構造方法

       4)、JAVA預設調用父類中無參的構造方法

       5)、給父類中添加了一個有參數的顯示的構造方法,那麼隱式的無參數的構造方法就不存在了

 

三、多態

  根據程式執行的時候根據傳入的參數決定綁定哪一個方法

  條件:1、要有繼承   2、方法的重寫   3、父類的引用指向子類的對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.