SMALL
안녕하세요, 코린이의 코딩 학습기 채니입니다.
Java 객체를 예습했던 내용을 정리한 포스팅입니다.
super()와 super.
super()
: 부모 객체의 생성자를 호출하는 메소드로 기본적으로 후손 생성자에 부모 생성자 포함
: 후손 객체 생성 시에는 부모부터 생성이 되기 때문에 후손 클래스 생성자 안에는 부모 생성자를 호출하는 super()가 첫 줄에 존재
(부모 생성자가 가장 먼저 실행 되어야 하기 때문에 명시적으로 작성 시에도 반드시 첫 줄에만 작성)
: 매개변수 있는 부모 생성자 호출은 super(매개변수, 매개변수)를 넣으면 됨
super.
: 상속을 통한 자식 클래스 정의 시 해당 자식 클래스의 부모 객체를 가리키는 참조변수
: 자식 클래스 내에서 부모 클래스 객체에 접근하여 필드나 메소드 호출 시 사용
package com.kh.p1.inherit.child.model.vo;
import com.kh.p1.inherit.parent.model.vo.Person;
public class Student extends Person {
private int grade; //학년
private String major; //전공
public Student() {
super();
}
public Student(int grade, String major) {
super();
this.grade = grade;
this.major = major;
}
public Student(String name, int age, char gender, String addr, int grade, String major) {
super(name, age, gender, addr);
this.grade = grade;
this.major = major;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getMajor() {
return major;
}
public void setGrade(String major) {
this.major = major;
}
public String information() {
// return "이름 : " + super.name + ", 나이 : " + age + ", 성별 : " + gender + ", 주소 : " + addr + ", 학년 : " + grade + ", 전공 : " + major;
return super.information() + ", 학년 : " + grade + ", 전공 : " + major;
}
}
package com.kh.p1.inherit.parent.model.vo;
public class Person {
protected String name; //이름
protected int age; //나이
protected char gender; //성별
protected String addr; //주소
public Person() {}
public Person(String name, int age, char gender, String addr) {
this.name = name;
this.age = age;
this.gender = gender;
this.addr = addr;
}
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 char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String information() {
return "이름 : " + name + ", 나이 : " + age + ", 성별 : " + gender + ", 주소 : " + addr;
}
}
@run
package com.kh.p1.inherit.run;
import com.kh.p1.inherit.child.model.vo.Employee;
import com.kh.p1.inherit.child.model.vo.Student;
public class Run {
public static void main(String[] args) {
Employee emp = new Employee();
emp.setName("김씨");
emp.setAge(17);
emp.setSalary(2000);
//System.out.println(emp.getName() + " (부모 클래스)");
//System.out.println(emp.getAge() + " (부모 클래스)");
//System.out.println(emp.getSalary());
//Student stu = new Student(3, "컴퓨터공학과");
//System.out.println(stu.information());
//Employee emp1 = new Employee(2000, "영업부");
//System.out.println(emp1.informaiton());
Student stu1 = new Student("홍길동", 21, '남', "서울시 송파구", 3, "컴퓨터공학과");
System.out.println(stu1.information());
}
}
@출력값
이름 : 홍길동, 나이 : 21, 성별 : 남, 주소 : 서울시 송파구, 학년 : 3, 전공 : 컴퓨터공학과
상속 구조를 통해 자식 클래스 하나만 생성하면서 부모 객체에 있는 멤버변수의 값까지 컨트롤 할 수 있음!
Is a 와 Has a
Is a (상속관계/일반화 관계)
: "자식 클래스는 (하나의) 부모 클래스이다." 관계로, 부모 클래스를 자식 클래스가 상속한다.
Circle is a Shape.
Circle(자식) 클래스는 하나의 Shape(부모) 클래스이다. (Is a 상속관계)
Has a (포함관계/연관관계)
: 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언함
Circle has a PointCircle 클래스는 Point 클래스를 가지고 있다. (has a 포함 관계)
package com.kh.p1.inherit.child.model.vo;
public class Computer {
//멤버변수
private String cpu; // cpu사양
private String brand; // 제조사
private int price; // 가격
//기본생성자
public Computer() {}
//매개변수 있는 생성자
public Computer(String cpu, String brand, int price) {
this.cpu = cpu;
this.brand = brand;
this.price = price;
}
//getter setter
public String getCpu() {
return cpu;
}
public void setCpu(String cpu) {
this.cpu = cpu;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
//멤버변수의 값들을 string으로 반환해줄 수 있게 하는 information이라는 메소드
public String information() {
return ", cpu : " + cpu + ", 제조사 : " + brand + ", 가격 : " + price;
}
}
package com.kh.p1.inherit.child.model.vo;
import com.kh.p1.inherit.parent.model.vo.Person;
public class Student extends Person {
private int grade; //학년
private String major; //전공
private Computer com; //Computer 클래스를 하나의 멤버변수로 포함 (포함관계)
public Student() {
super();
}
public Student(int grade, String major) {
super();
this.grade = grade;
this.major = major;
}
public Student(String name, int age, char gender, String addr, int grade, String major, Computer com) {
super(name, age, gender, addr);
this.grade = grade;
this.major = major;
this.com = com;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getMajor() {
return major;
}
public void setGrade(String major) {
this.major = major;
}
public String information() {
// return "이름 : " + super.name + ", 나이 : " + age + ", 성별 : " + gender + ", 주소 : " + addr + ", 학년 : " + grade + ", 전공 : " + major;
return super.information() + ", 학년 : " + grade + ", 전공 : " + major + com.information();
}
}
package com.kh.p1.inherit.run;
import com.kh.p1.inherit.child.model.vo.Computer;
import com.kh.p1.inherit.child.model.vo.Employee;
import com.kh.p1.inherit.child.model.vo.Student;
public class Run {
public static void main(String[] args) {
Computer com = new Computer("i7-1234", "채코", 1800);
Student stu2 = new Student("홍길동", 21, '남', "서울시 송파구", 3, "컴퓨터공학과", com);
System.out.println(stu2.information());
}
}
@출력값
이름 : 홍길동, 나이 : 21, 성별 : 남, 주소 : 서울시 송파구, 학년 : 3, 전공 : 컴퓨터공학과, cpu : i7-1234, 제조사 : 채코, 가격 : 1800
LIST
'Java > Java 예습' 카테고리의 다른 글
[Java] 자바의 객체 Part.2 예습_3 (0) | 2022.01.24 |
---|---|
[Java] 자바의 객체 Part.2 실습_1 (0) | 2022.01.20 |
[Java] 자바의 객체 Part.2 예습_1 (0) | 2022.01.20 |
[Java] 자바의 객체 예습 1-7 정리 (0) | 2022.01.18 |
[Java] 자바의 객체 예습_7 (0) | 2022.01.18 |