JAVA學習筆記——JAVA基礎文法(四)

來源:互聯網
上載者:User

一、對象轉型

  1、向上轉型:父類的引用指向子類的對象(父類的引用指向子類的對象的時候不能使用子類多出來的成員)

  2、向下轉型:簡單一句話其實就是強制類型轉換

二、toString()

  預設調用情況:1、使用System.out.println()   控制台上只顯示字串,所以在列印之前要先轉換成字串類型再輸出

         2、當出現使用‘+’號連接字串的時候

  toString 方法返回一個字串,該字串由類名(對象是該類的一個執行個體)、at 標記符“@”和此對象雜湊碼的無符號十六進位表示組成。

  在自己寫的類中建議重寫toString()方法,這樣有時候會使我們的程式更加簡潔輸出介面更加美觀

  如下程式重寫的toString()方法使得程式輸出更加美觀:程式中規定了toString的輸出方式,使得程式的輸出美觀

public class test{    public static void main(String[] args){        Person p1 = new Person("jack",34);        Person p2 = new Person("tom",21);                System.out.println(p1);        System.out.println(p2);    }}class Person{    Person(String name,int age){        this.name = name;        this.age = age;    }        String name;    int age;    public String toString(){        return ("name is:" + name + "  age is:"+ age);    }}

三、“==”和equals的區別以及使用方法

  “==”比較的棧區的內容;而equals比較的是堆區的內容

  一般我們在寫一個類的時候最好是重寫equals方法,這樣的話可以滿足使用者自己的需要來進行對象之間的比較,用以實現使用者的相關功能

   但是如果我們重寫了equals的方法也一定要重寫hashCode()方法

    相等的對象一定有相等的雜湊碼  相等的雜湊碼不一定有兩個相等的對象(因為記憶體中有相同的雜湊碼的一片地區可以有很多個對象)

  例如一下程式重寫的equals方法:我們可以自己規定equals的比較方法

public class test{    public static void main(String[] args){        Person p1 = new Person("jack",21);        Person p2 = new Person("tom",23);        System.out.println(p1.equals(p2));    }}class Person{    Person(String name,int age){        this.name = name;        this.age = age;    }        String name;    int age;    public boolean equals(Object obj){        Person p = (Person)obj;        if(this.name.equals(p.name)){            return true;        }else{            return false;        }    }
  public int hashCode(){
    return this.name.hashCode();
}}

四、final關鍵字

  1、加在成員變數上,表示常量

  2、加在方法上,表示不能被重寫

  3、加在類上,表示不能被繼承

五、abstract(抽象的)

  1、加在類上,不能執行個體化(不能建立對象)

  2、一個類是用來被繼承的,比如說多態的時候父類的引用指向子類的對象的時候,父類不需要執行個體化

  3、抽象的方法就是用來被重寫的,並且方法是抽象的那麼類也必須是抽象的

  4、抽象的類中可以有抽象的方法也可以有非抽象的方法

六、interface(介面)

   1、介面就是一種特殊的抽象的類(只有抽象方法和常量)

  2、它就是一種規範標準

  3、介面稱之為類實現了介面,方法也稱之為實現

  4、介面與類之間叫實現,介面之間叫繼承,介面可以有多個,父類只能有一個,

  方法都是預設的 public abstract類型   常量預設都是public fianl static

  一下程式詳細的描述了介面的幾大特徵的呈現:

public class test{    public static void main(String[] args){        Animel animel = new Animel();        animel.catching();        animel.sleep();        animel.run();    }}interface cat{    //寫一個介面  public void catching();}interface mouse{    public void run();  //這是一個抽象方法}interface dog{    int num = 10;        //  一個抽象的常數  其詳細的表示方法為:public fianl static int num = 10;    public void see();}interface pig extends cat,mouse,dog{   //多繼承,介面之間繼承可以有多個    public void sleep();}class Animel implements pig{     //類與介面之間為實現  只允許有一個父類     public void catching(){         System.out.println("cat is catching");     }     public void run(){         System.out.println("mouse is running");     }     public void sleep(){         System.out.println("pig is sleeping");     }     public void see(){         System.out.println("dog is see");     }}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.