반응형
1.this란?
자바에서 this는 객체 or 자기 자신을 나타냅니다
1) 클래스의 속성과 생성자/메서드의 매개변수의 이름이 같을 경우
public class Students {
private static String name;
private static int age;
private static int grade;
public void student(String name, int age, int grade) {
// 메소드
this.name = name;
this.age = age;
this.grade = grade;
System.out.println(name);
System.out.println(age);
System.out.println(grade);
}
public Students(String name, int age, int grade) {
// 생성자
this.name = name;
this.age = age;
this.grade = grade;
}
public static void main(String[] args) {
Students kim = new Students("yousun", 19, 3);
System.out.println(kim.name);
System.out.println(kim.age);
System.out.println(kim.grade);
kim.student("hoho", 10, 3);
}
}
2. 클래스에 오버 로딩된 다른 생성자 호출
생성자의 최상단에 사용되어야 함.
public class Students {
private static String name;
private static int age;
private static int grade;
public Students(String name, int age ){
// 생성자1
this(name, age,0);
//생성자2를 호출하는 생성자1
}
public Students(String name, int age, int grade) {
// 생성자2
this.name = name;
this.age = age;
this.grade = grade;
}
public static void main(String[] args) {
Students constructor = new Students("asd",1);
System.out.println(constructor.name);
System.out.println(constructor.age);
System.out.println(constructor.grade);
}
}
◆ 생성자 오버로드란?
두 개 이상의 생성자
오버로드는 똑같은 기능을 인자를 다르게해서 편의를 도모하는 것이다.
하나를 구현하고 나머지를 재호출하는 방식으로한다.
public class Students {
private Exam[] exams;
private int current;
public Students(int size) {
exams = new Exam[size];
current =0;
}
public static void main(String[] args) {
}
}
기본생성자가 없다면
new Students();라는 코드를 사용할수 없다
new Students(10);는 가능하다.
생성자를 하나도 정의하지 않는다면?
new ExamList();기본생성자는 컴파일러가 자동으로 만든다.
만약 오버로드된 생성자가 존재하면 컴파일러가 기본생성자를 만들어주지 않는다.
public class Students {
private Exam[] exams;
private int current;
/*
* public Students( ){ exams = new Exam[3]; current =0; }
*/
public Students( ){
this(3); //값을 넣지않으면 자기 자신을 호출하지만.
//인자를 넣으면 인자를 가진 생성자를 호출한다.
//객체가있어야 호출가능 객체 =this
}
public Students(int size) {
exams = new Exam[size];
current =0;
}
public static void main(String[] args) {
}
}
3. 객체 자신의 참조값을 전달하고 싶을때
어떤 메소드에서는 동작을 완료하고 리턴값으로
어떤 메소드에서는 내부에서 호출하고자 하는 메소드의 매개변수(input parameter)로
객체, 자기 자신의 참조값을 전달하고 싶은 경우가 있음
이럴때에는 getInstance()메소드처럼 this 키워드를 이용함으로써 구현이 가능
public class Students {
public int score;
public int grade;
public int age;
public String name;
public Students(int score, int grade, int age, String name) {
this.score = score;
this.grade = grade;
this.age = age;
this.name =name;
}
public Students getInstance() {
return this;
}
}
getInstance()메소드를 사용하거나 인자로 받게되면 new Students()로 만들어진 객체가 동일한 참조값과 값을 전달한다.
반응형
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 13일차 -26 (0) | 2020.03.13 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 12일차 -25 (0) | 2020.03.12 |
자바기반의 웹&앱 응용 SW개발자 양성과정 12일차 -23 (0) | 2020.03.12 |
자바기반의 웹&앱 응용 SW개발자 양성과정 11일차 -22 (0) | 2020.03.11 |
자바기반의 웹&앱 응용 SW개발자 양성과정 10일차 -21 (0) | 2020.03.10 |
댓글