> Java > Java베이스 > 자바에서 이것의 용도는 무엇입니까?

자바에서 이것의 용도는 무엇입니까?

angryTom
풀어 주다: 2019-11-11 15:56:56
원래의
3583명이 탐색했습니다.

자바에서 이것의 용도는 무엇입니까?

Java

1. 이것은 현재 속성을 호출합니다: 주요 기능은 클래스에서 데이터를 초기화해야 할 때 이를 통해 할당할 수 있다는 것입니다. 부담없이 정의하는 대신 변수를 사용하여 코드를 읽고 이해하는 데 도움이 됩니다 (추천 튜토리얼: java tutorial)

class Book{//定义书的类
    private String name;//书本名字
    private int price;//书本价格
    public Book(String name,int price){ //使用this对类的数据进行初始化
        this.name = name;        
        this.price = price;
    }
    /*public Book(String n,int p){ //若不使用this关键字只能这样进行赋值,不利于将变量与属性统一起来
        name = n;
        price = p;
    }*/
    public String getInfo(){
        return "书籍:" + name + ",价格:" + price;
    }
}
public class ThisDemo{
    public static void main(String args[]){
        System.out.printIn(new Book("Java",89.9).getInfo())
    }
}
로그인 후 복사

2. (일반 메서드, 생성자 메서드)

( 1) 일반 메서드:

class Book{//定义书的类
    private String name;//书本名字
    private int price;//书本价格
    public Book(String name,int price){//使用this对类的数据进行初始化
        this.name = name; 6         this.price = price;
        this.print();//调用本类普通方法,虽然可以不用使用this也可以进行本类普通方法的调用,但是好的习惯最好应该加上,目的是可以区分方法的定义来源
    }
    public String getInfo(){
        return "书籍:" + name + ",价格:" + price;
    }
    public void print(){
        System.out.printIn("***********");
    }
}
public class ThisDemo{
    public static void main(String args[]){
        System.out.printIn(new Book("Java",89.9).getInfo())
    }
}
로그인 후 복사

(2) 생성자 메서드: 일반 메서드와 생성자 메서드의 차이점은 생성자 메서드는 생성 후 한 번만 사용하여 데이터를 초기화할 수 있다는 점입니다. 일반 메서드는 생성 후 여러 번 호출될 수 있습니다.

동일한 반복 내용을 출력하기 위해 생성자 메서드를 사용해야 하는 경우 this 키워드를 사용하지 않으면 다음 코드만 사용할 수 있습니다.

class Book{//定义书的类
    private String name;//书本名字
    private int price;//书本价格
    public Book(){//无参构造
        System.out.printIn("*************");
    }
    public Book(String name){//一参构造
        System.out.printIn("*************");
        this.name = name;
    }
    public Book(String name,int price){//二参构造
        System.out.printIn("*************");
        this.name = name;
        this.price = price;
        }
    public String getInfo(){
        return "书籍:" + name + ",价格:" + price;
    }
}
public class ThisDemo{
    public static void main(String args[]){
        System.out.printIn(new Book("Java",89.9).getInfo())
    }
}
로그인 후 복사

분명히 이는 코드 줄 수를 크게 낭비하며, this는 생성자 메서드를 호출하는 데 사용해야 합니다. 메서드는 다음과 같습니다.

class Book{//定义书的类
    private String name;//书本名字
    private int price;//书本价格
    public Book(){//无参构造
        System.out.printIn("*************");
    }
    public Book(String name){//一参构造
        this();//调用本类中的无参构造
        this.name = name;
    }
    public Book(String name,int price){//二参构造
        this(name);//调用本类中的一参构造
        this.price = price;
        }
    public String getInfo(){
        return "书籍:" + name + ",价格:" + price;
    }  

}
public class ThisDemo{
    public static void main(String args[]){
        System.out.printIn(new Book("Java",89.9).getInfo())
    }
}
로그인 후 복사

참고: this에 대한 호출은 생성자의 첫 번째 문이어야 합니다. 그렇지 않으면 오류가 발생합니다. 일반적인 방법.

가장 중요한 것은 이것을 호출하면 루프를 형성할 수 없다는 것입니다. 즉, 종료 없이 재귀 호출을 형성할 수 없습니다.

3. 이것은 현재 메서드를 나타냅니다.

class Book{
    public void fun(){
        System.out.printIn("FUN方法"+this);
    }
    }
}
public class ThisDemo{
    public static void main(String args[]){
        Book b1 = new Book();
        System.out.printIn("MAIN方法"+b1);
        b1.fun();//有b1调用fun方法(this = b1)
        //两个输出结果的地址一样,代表着此时this代表着b1
        System.out.printIn("*************")
        Book b2 = new Book();
        System.out.printIn("MAIN方法"+b2);
        b2.fun();//此时输出结果和b2一样
    }
}
로그인 후 복사

프로세스 전반에 걸쳐 this의 정의는 변경되지 않았습니다. 특정 개체가 이 클래스의 메서드를 호출하는 한 이는 현재 실행 중인 개체를 나타냅니다.

위 내용은 자바에서 이것의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿