精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • java中this的作用及用法?在什么情況下需要用this

    java中this的作用及用法?在什么情況下需要用this
    其他人氣:708 ℃時(shí)間:2020-05-01 07:47:58
    優(yōu)質(zhì)解答
    使用this調(diào)用本類中的屬性
    現(xiàn)在觀察以下代碼,看會(huì)有那些問(wèn)題:
    public void setName(String name){
    name = name ;
    }
    這里面的兩個(gè)name都是setName方法中的name參數(shù).
    此時(shí),特別希望可以通過(guò)一個(gè)指定的標(biāo)識(shí)明確的表示要把傳入的name參數(shù)的值給類中的屬性,所以此時(shí)就需要使用this關(guān)鍵字,使用this.name就表示類中的屬性.
    class Person{
    private String name ;
    private int age ;
    public Person(String name,int age){
    this.setName(name) ;
    this.setAge(age) ;
    }
    public void setName(String name){
    this.name = name ;
    }
    public void setAge(int age){
    this.age = age ;
    }
    public String getName(){
    return this.name ;
    }
    public int getAge(){
    return this.age ;
    }
    public void print(){
    System.out.println("姓名:"+this.name+",年齡:"+this.age) ;
    }
    };
    public class Demo35{
    public static void main(String args[]){
    Person p1 = new Person("張三",30) ;
    p1.print() ;
    }
    };
    使用this還可以從一個(gè)構(gòu)造方法中調(diào)用其他構(gòu)造方法.
    例如:有以下一個(gè)要求,一個(gè)類中存在了三個(gè)構(gòu)造方法,但是要求,不管怎么調(diào)用,最終都要求可以在對(duì)象實(shí)例化的時(shí)候打印一個(gè)“新的對(duì)象產(chǎn)生了”的提示.
    class Person{
    private String name ;
    private int age ;
    public Person(){
    System.out.println("新的對(duì)象產(chǎn)生了.") ;
    }
    public Person(String name){
    System.out.println("新的對(duì)象產(chǎn)生了.") ;
    this.setName(name) ;
    }
    public Person(String name,int age){
    System.out.println("新的對(duì)象產(chǎn)生了.") ;
    this.setName(name) ;
    this.setAge(age) ;
    }
    public void setName(String name){
    this.name = name ;
    }
    public void setAge(int age){
    this.age = age ;
    }
    public String getName(){
    return this.name ;
    }
    public int getAge(){
    return this.age ;
    }
    public void print(){
    System.out.println("姓名:"+this.name+",年齡:"+this.age) ;
    }
    };
    以上代碼雖然可以實(shí)現(xiàn)功能,但是同樣的代碼出現(xiàn)了三次,而且后面的兩次出現(xiàn)純屬多余吧.用this()的形式可以調(diào)用類中的無(wú)參構(gòu)造方法.
    class Person{
    private String name ;
    private int age ;
    public Person(){
    System.out.println("新的對(duì)象產(chǎn)生了.") ;
    }
    public Person(String name){
    // 最終都是調(diào)用無(wú)參構(gòu)造方法
    this() ;
    this.setName(name) ;
    }
    public Person(String name,int age){
    this(name) ;
    this.setAge(age) ;
    }
    public void setName(String name){
    this.name = name ;
    }
    public void setAge(int age){
    this.age = age ;
    }
    public String getName(){
    return this.name ;
    }
    public int getAge(){
    return this.age ;
    }
    public void print(){
    System.out.println("姓名:"+this.name+",年齡:"+this.age) ;
    }
    };
    public class Demo36{
    public static void main(String args[]){
    Person p1 = new Person("張三",30) ;
    p1.print() ;
    }
    };
    注意點(diǎn)1:
    如果使用了this調(diào)用其他構(gòu)造方法,則此語(yǔ)句,必須寫在構(gòu)造方法的首行.
    public void fun(){
    // 發(fā)現(xiàn)在調(diào)用fun方法的時(shí)候,必須先設(shè)置name的值
    this("zhangsan") ;
    }
    public Person(String name,int age){
    this.setAge(age) ;
    this(name) ; //--> 必須放在首行
    }
    注意點(diǎn)2:
    使用this可以調(diào)用本類中的其他構(gòu)造方法,但是至少留一個(gè)構(gòu)造方法,作為程序的出口.
    public Person(){
    this("a",10) ;
    System.out.println("新的對(duì)象產(chǎn)生了.") ;
    }
    public Person(String name){
    // 最終都是調(diào)用無(wú)參構(gòu)造方法
    this() ;
    this.setName(name) ;
    }
    public Person(String name,int age){
    this(name) ; //--> 必須放在首行
    this.setAge(age) ;
    }
    this最重要的特性 —— 表示當(dāng)前對(duì)象
    當(dāng)前對(duì)象在程序中用以下形式體現(xiàn):
    · 當(dāng)前操作此方法的對(duì)象,就稱為當(dāng)前對(duì)象.
    class Demo{
    public void print(){
    System.out.println(this) ;
    }
    };
    public class Demo38{
    public static void main(String args[]){
    Demo d1 = new Demo() ;
    System.out.println(d1) ;
    d1.print() ;
    System.out.println("---------------------") ;
    Demo d2 = new Demo() ;
    System.out.println(d2) ;
    d2.print() ;
    }
    };
    回顧:
    之前講解的兩個(gè)對(duì)象比較的程序.
    // 在類的內(nèi)部增加一個(gè)比較的方法
    public boolean compare(Person p){
    Person p1 = this ;
    Person p2 = p ;
    if(p1.name.equals(p2.name)&&p1.age==p2.age){
    return true ;
    }else{
    return false ;
    }
    }
    分析程序的運(yùn)行過(guò)程:
    class A{
    private B b = null ;
    public A(){
    this.b = new B(this) ;
    this.b.fun() ;
    }
    public void hello(){
    System.out.println("Hello World!") ;
    }
    };
    class B{
    private A a = null ;
    public B(A a){
    this.a = a ;
    }
    public void fun(){
    this.a.hello() ;
    }
    };
    public class OODemo40{
    public static void main(String args[]){
    A aa = new A() ;
    }
    };
    我來(lái)回答
    類似推薦
    請(qǐng)使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點(diǎn),以保證最佳閱讀效果。本頁(yè)提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機(jī)版