국비 16일차 JAVA(생성자, 객체 생성, 오버로딩, this, getter/setter)
2021. 1. 26. 18:12
2021.01.26 국비교육 16일차
[TOC]
생성자
- 리턴타입이 없으며 반드시 클래스명으로 지정
- 자동으로 기본 생성자 생성
public class Student {
//이름, 나이, 주소, ssn 변수 선언
//4개의 값을 초기화 할 수 있는 생성자 작성
String name;
int age;
String address;
String ssn;
public Student(String name, int age) {
this(name, age, "경기", "???????"); // 매개변수 4개 호출
}
public Student(String name) {
this(name, 10);
//public Student(String name, int age, String address, String ssn)
//이걸 호출하는 거랑 똑같음
//클래스 안의 다른 생성자를 클래스 안에서 직접 호출 사용 : 생성자의 맨 첫줄에 작성해야함
// this.name = name;
// this.age = 10;
// this.address = "서울";
// this.ssn = "???????";
}
public Student(String name, int age, String address, String ssn) {
this.name = name;
this.age =age;
this.address =address;
this.ssn =ssn;
}
public Student() {}
}
public class TestStudent {
public static void main(String[] args) {
Student stu1 = new Student("홍길동", 10, "서울", "1234");
System.out.println(stu1.name + "\t" + stu1.age+ "\t" + stu1.address + "\t" + stu1.ssn);
Student stu2 = new Student("이순신");
System.out.println(stu2.name + "\t" + stu2.age+ "\t" + stu2.address + "\t" + stu2.ssn);
Student stu3 = new Student("강감찬", 20);
System.out.println(stu3.name + "\t" + stu3.age+ "\t" + stu3.address + "\t" + stu3.ssn);
Student stu4 = new Student("유관순");
System.out.println(stu4.name + "\t" + stu4.age+ "\t" + stu4.address + "\t" + stu4.ssn);
}
}
객체 생성
문법 : 클래스명 참조변수명 = new 클래스명([인자]);
정의한 클래스를 이용하여 실객체를 메모리에 올리는 방법
메모리에 올라간 클래스의 구현체를 인스턴스(instance)라고 한다.
heap 메모리에 클래스의 멤버가 생성
오버로딩 메소드/ 오버로딩 생성자
기본적으로 같은 클래스내에서는 이름이 중복되면 식별이 불가능 하기 때문에
이름이 중복되면 에러가 발생함
but 메소드와 생성자는 이름과 파라미터로 식별이 가능하여 여러개 지정할 수 있음 이것을 '오버로딩'이라 함
규칙
반드시 인자리스트(순서,타입,개수) 달라야함
this 키워드
this는 객체 생성후에 메모리에 올라간 자기자신의 인스턴스를 가리킨다.
다른 클래스에서는 참조변수명을 사용하여 생성된 인스턴스를 참조할 수 있지만
자기 자신이 참조할 때는 this 키워드를 사용한다.
메소드
- 일반적으로 인스턴스 변수에 저장된 데이터를 수정 및 조회하는 역할
- 객체 생성 후 명시적으로 호출해야 수행됨
getter / setter
- getter : 특정 결과값을 얻고자 작성한 메소드
- setter : 특정값을 설정하고자 할때 사용
- 두개를 사용하는 이유 : 데이터 무결성을 유지하기 위해서
- 데이터를 통제 할 수 있는 단위 (캡슐)로 나눈 다음 메소드를 활용하여 데이터 주고받음
public class Student {
String name;
int age;
String address;
public String getData() {
// return this.name + "\t" + this.age + "\t" +this.address;
return getName() + getAge() + getAddress();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Student(String name, int age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
public Student() {
}
}
'ETC > 국비교육' 카테고리의 다른 글
국비 18일차 JAVA 초기화블록, 싱글톤, final, vargars (0) | 2021.01.28 |
---|---|
국비 17일차 static (0) | 2021.01.27 |
국비 15일차 JAVA 배열, 클래스 (0) | 2021.01.25 |
국비 14일차 JAVA (for문, break, label, 배열) (0) | 2021.01.22 |
국비교육 13일차 JAVA(3항연산자, Scanner, 문자열, if, if else, switch, while, do-while) (0) | 2021.01.21 |