자바 의 this 키워드 사용 및 방법의 리 셋 에 관 한 지식
public class Demo{
public int x = 10;
public int y = 15;
public void sum(){
// this
int z = this.x + this.y;
System.out.println("x + y = " + z);
}
public static void main(String[] args) {
Demo obj = new Demo();
obj.sum();
}
}
실행 결과:
x + y = 25
위의 프로그램 에서 obj 는 Demo 류 의 인 스 턴 스 입 니 다. this 와 obj 등가 로 int z = this. x + this. y 를 실행 합 니 다.int z = obj. x + obj. y 를 실행 하 는 것 과 같 습 니 다.
주의: this 는 클래스 를 예화 한 후에 만 의미 가 있 습 니 다.this 를 사용 하여 동명 변 수 를 구분 합 니 다.
구성원 변수 와 방법 내부 의 변수 가 이름 을 바 꿀 때 방법 내부 에서 구성원 변 수 를 호출 하려 면 어떻게 해 야 합 니까?이 때 this 만 사용 할 수 있 습 니 다. 예 를 들 어:
public class Demo{
public String name;
public int age;
public Demo(String name, int age){
this.name = name;
this.age = age;
}
public void say(){
System.out.println(" " + name + ", " + age + " ");
}
public static void main(String[] args) {
Demo obj = new Demo(" ", 3);
obj.say();
}
}
실행 결과:
, 3
형 삼 의 작용 역 은 전체 방법 체 이 고 국부 변수 이다.Demo () 에 서 는 형태 참조 와 구성원 변수 가 이름 을 바 꿉 니 다. this 를 사용 하지 않 으 면 구성원 변수 가 아 닌 부분 변수 name 과 age 에 접근 합 니 다.say () 에서 우 리 는 this 를 사용 하지 않 았 습 니 다. 구성원 변수의 역할 영역 은 전체 인 스 턴 스 이기 때문에 당연히 this 를 추가 할 수 있 습 니 다.
public void say(){
System.out.println(" " + this.name + ", " + this.age + " ");
}
자바 는 기본적으로 모든 구성원 변수 와 구성원 방법 을 this 와 연결 하기 때문에 this 를 사용 하 는 것 은 어떤 경우 에는 불필요 합 니 다.방법 명 으로 대상 을 초기 화 합 니 다.
즉, 본 류 의 다른 구조 방법 을 호출 하 는 것 과 같 으 며, 그것 은 반드시 구조 방법의 첫 번 째 문장 이 되 어야 한다.예 는 다음 과 같다.
public class Demo{
public String name;
public int age;
public Demo(){
this(" ", 3);
}
public Demo(String name, int age){
this.name = name;
this.age = age;
}
public void say(){
System.out.println(" " + name + ", " + age + " ");
}
public static void main(String[] args) {
Demo obj = new Demo();
obj.say();
}
}
운영 결과: 사이트 이름 은 마이크로 학원 으로 설립 된 지 3 년 이 되 었 습 니 다.
주의해 야 할 것 은 구조 방법 에서 다른 구조 방법 을 호출 하고 동작 을 호출 할 때 반드시 최초의 위치 에 두 어야 한 다 는 것 이다.구조 방법 이외 의 어떤 방법 에서 도 구조 방법 을 호출 할 수 없다.하나의 구조 방법 내 에서 하나의 구조 방법 만 호출 할 수 있다.
상기 코드 는 방법 을 다시 불 러 오 는 것 과 관련 이 있 습 니 다. 즉, 자바 는 여러 개의 동명 방법 을 허용 하고 매개 변수 만 다 르 면 됩 니 다.후속 장절 회 에서 설명 하 다.매개 변수 로 전달
완전히 분 리 된 클래스 에서 방법 을 호출 하고 현재 대상 의 인용 을 매개 변수 로 전달 해 야 할 때.예 를 들 면:
public class Demo{
public static void main(String[] args){
B b = new B(new A());
}
}
class A{
public A(){
new B(this).print(); //
}
public void print(){
System.out.println("Hello from A!");
}
}
class B{
A a;
public B(A a){
this.a = a;
}
public void print() {
a.print();
System.out.println("Hello from B!");
}
}
실행 결과:
Hello from A!
Hello from B!
익명 의 대상 은 이름 이 없 는 대상 이다.대상 이 한 번 만 사용 하면 익명 의 대상 이 될 수 있 습 니 다. 코드 에 new B (this). print ();(new B (this). print ();먼저 new B (this) 를 통 해 이름 없 는 대상 을 만 들 고 호출 하 는 방법 입 니 다.
자바 방법 은 자바 에 다시 불 러 옵 니 다. 같은 클래스 의 여러 방법 은 같은 이름 을 가 질 수 있 습 니 다. 매개 변수 목록 이 다 르 기만 하면 됩 니 다. 이것 은 방법 으로 다시 불 러 옵 니 다 (method overloading).
매개 변수 목록 은 매개 변수 서명 이 라 고도 부 릅 니 다. 매개 변수의 유형, 매개 변수의 개수 와 매개 변수의 순 서 를 포함 하고 하나만 다 르 면 매개 변수 목록 이 다르다 고 합 니 다.
과부하 는 대상 을 대상 으로 하 는 기본 적 인 특성 이다.
다음은 상세 한 실례 를 보 겠 습 니 다.
public class Demo{
// ,
void test(){
System.out.println("No parameters");
}
// ,
void test(int a){
System.out.println("a: " + a);
}
// ,
void test(int a,int b){
System.out.println("a and b: " + a + " " + b);
}
// ,
double test(double a){
System.out.println("double a: " + a);
return a*a;
}
public static void main(String args[]){
Demo obj= new Demo();
obj.test();
obj.test(2);
obj.test(2,3);
obj.test(2.0);
}
}
실행 결과:
No parameters
a: 2
a and b: 2 3
double a: 2.0
위의 실례 를 통 해 독자 들 은 다시 불 러 오 는 것 은 하나의 클래스 에서 같은 함수 명칭 이 있 지만 형 삼 이 다른 함수 임 을 알 수 있다.다시 불 러 오 는 결 과 는 프로그램 세그먼트 가 코드 와 방법의 종 류 를 최대한 줄 일 수 있 습 니 다.
설명:
4. 567917. 매개 변수 목록 이 다 르 면 개수 가 다 르 고 유형 이 다 르 며 순서 가 다르다
4. 567917. 매개 변수 이름 만 다 르 면 안 됩 니 다
4. 567917. 멤버 방법 과 마찬가지 로 구조 방법 도 다시 실 을 수 있다
4. 567917. final 로 성명 하 는 방법 은 다시 실 을 수 없습니다
4. 567917. static 로 성명 하 는 방법 은 다시 불 러 올 수 없 지만 다시 성명 할 수 있 습 니 다
방법의 과부하 규칙:
방법 명칭 은 반드시 같 아야 한다
4. 567917. 매개 변수 목록 은 반드시 다 르 게 해 야 한다 (개수 가 다 르 거나 유형 이 다 르 거나 매개 변수 배열 순서 가 다르다)
4. 567917. 방법의 반환 유형 은 같 을 수도 있 고 다 를 수도 있다
4. 567917. 유형 만 다 르 면 방법의 과부하 가 되 기 에는 부족 하 다
방법 재 업로드 의 실현: 방법 이름 과 동시에 컴 파일 러 는 호출 방법의 매개 변수 개수, 매개 변수 유형 등에 따라 하나씩 일치 하여 대응 하 는 방법 을 선택 하고 일치 하지 않 으 면 컴 파일 러 가 잘못 보고 합 니 다. 이것 은 재 업로드 분해 라 고 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.