Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 누승재귀
- 오라클
- 자바실행방법
- 자바상수
- 자바함수
- 연산자우선순위
- 기타제어자
- 자바접근지정자
- 변수의 초기화
- 자바연산자
- 자바if문
- 자바형식
- 프로그래머스
- 자바기타제어자
- 효율적인연산
- 자바수우미양가
- 자바자료형
- 중첩for문
- SQL
- 자바switch문
- 변수명명규칙
- 자바제어문
- 자바클래스
- 오버로딩
- 겟셋함수
- read()함수
- 자바별찍기
- 클래스배열
- 팩토리얼재귀
- 반복문라벨
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 생성자(Constructor) / this의 의미 본문
> p.291 생성자(Constructor) **암기
객체 생성 + 초기화 = 생성자 (constructor) == 생성자함수
1. 생성자명은 클래스명과 같아야 한다.
2. 생성자의 기능 : 객체의 생성 + 필드 초기화
3. 선언 형식
[접근지정자] [기타제어자] 생성자명 ([매개변수..]) { }
접근지정자는 4가지 모두 사용
3-1. 리턴자료형 붙이지 않는다. 리턴자료형 없는 함수의 일종
4. 생성자 호출 시기
[객체 생성할 때 (new 클래스명()) ] 자동으로 호출된다.
5. 오버로딩이 가능하다.
6. 매개변수(인자)가 없는 생성자를 디폴트 생성자라고 한다.
7. 상속되지 않는다.
생성자 만들때도 자동완성으로 alt + shift + s
package days16;
public class Ex09 {
public static void main(String[] args) {
// > MyPoint Default Constructor..
new MyPoint();
// > MyPoint 2 Constructor..
// > x=1, y=2
MyPoint p1 = new MyPoint(1,2);
p1.dispPoint();
// The constructor MyPoint(int) is undefined
// > MyPoint 1 Constructor..
// > x=100, y=100
MyPoint p2 = new MyPoint(100);
p2.dispPoint();
/*
MyPoint p1 = new MyPoint();
p1.x = 1;
p1.y = 2;
MyPoint p2 = new MyPoint();
p2.x = 3;
p2.y = 4;
MyPoint p3 = new MyPoint();
p3.x = 5;
p3.y = 6;
p1.dispPoint();
p2.dispPoint();
p3.dispPoint();
*/
}
}
package days16;
import java.util.ArrayList;
public class Ex12 {
public static void main(String[] args) {
// [this 키워드]
/*
* 1. 정의 ? 객체의 주소값을 갖는 참조변수
* (클래스 자기 자신의 주소값을 갖는 참조변수)
* 2. 참조변수 ?
* int [] m; //배열명도 참조변수
* Car myCar; //객체명도 참조변수
* 둘다 참조변수지만 m말고 myCar랑 같다는 것..
* 3. this가 사용되는 3가지 용도
* ㄱ. 클래스(객체)의 멤버(필드,메서드)를 가리킬 때의 this (명확하게 하기 위해)
* this.필드
* this.메서드()
* ㄴ. 생성자에서 또 다른 생성자를 호출할 때의 this
* ㄷ. 홀로 사용될 때의 this : 인자(argument), 리턴값
*
*/
Person p1 = new Person("kenik", 20, "경기", "010-1234-5678");
// > name:null, age:20
// Person p1 = new Person("kenik", 20);
p1.dispPerson();
Bus bus = new Bus(p1);
// 혹시 가변인자를 생성자에 사용할 수 있나 ?
// 아니요 생성자는 필드를 초기화하는 목적. 가변인자 사용할 필요?일?이없음
// Object...args
}//main
}//class
class Bus{
Person [] p = new Person[10];
Bus(){
}
Bus(Person person){
p[0] = person;
}
}
class Person{
//fields
String name;
int age;
String addr;
String tel;
/*
* Person(Object...args){
*
* }
*/
//constructor
Person(){
System.out.println("> Default Constructor");
}
Person(String name, int age){
this(); // 위에 생성자 Person() 호출
// The assignment to variable name has no effect
// name = name;
// this. -> 클래스의 멤버변수를 나타냄. 명시해야 제대로 할당됨
this.name = name;
this.age = age;
System.out.println("> 20 Constructor...");
}
public Person(String name, int age, String addr, String tel) {
this(name, age); //위에 생성자 Person(n,a) 호출
this.name = name;
this.age = age;
this.addr = addr;
this.tel = tel;
System.out.println("> 50 Constructor...");
}
//method
void dispPerson() {
System.out.printf("> name:%s, age:%d\n", this.name, this.age);
}
}
'Java' 카테고리의 다른 글
[Java] 기타제어자 - static (0) | 2021.07.17 |
---|---|
[Java] 클래스, 인스턴스(변수/메서드) 용어 정리 / 변수의 초기화 (0) | 2021.07.17 |
[Java] 가변인자(varargs)와 오버로딩 (0) | 2021.07.17 |
[Java] 접근지정자 - private / getter, setter (0) | 2021.07.17 |
[Java] 객체 생성 예제 (0) | 2021.07.16 |
Comments