※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.
07Day0_Has_Relation 프로젝트 생성
ㄴCar, Engine, TestCar 클래스 생성해서 상속 맛보기
책154쪽
6장. 상속
-super 키워드 : 부모클래스 변수나 함수 표시, 초기화 유도
-오버라이딩 함수 : 부모 함수를 자식이 수정해서 사용
모든 클래스의 최상위 부모클래스는 Objects
07Day1 프로젝트 생성 - Cat , Dog, Fish, TestPet 클래스 생성
[ Cat 클래스 멤버변수 ] private String name; private int age; private String gender; |
[ Dog 클래스 멤버변수 ] private String name; private int age; private String gender; private String color; //다른 애완동물에 없는 Dog 속성 |
[ Fish 클래스 멤버변수 ] private String name; private int age; private double tailSize; //Fish에만 존재하는 속성 가정 |
[ Cat 클래스 함수 ] //동작 ////////////////////////// public void cryCat() { System.out.println("cat 야옹~"); } public void eatCat() { System.out.println("cat 생선 먹기"); } public void sleepCat() { System.out.println("cat 새근새근~"); } ///////////////////////////////////// |
[ Dog 클래스 함수 ] //동작 //////////////////////////// 공통부분 public void cryDog() { System.out.println("Dog 멍멍~"); } public void eatDog() { System.out.println("Dog 사료 먹기"); } public void sleepDog() { System.out.println("Dog 쿨쿨~"); } ////////////////////////////////////// //다른 애완동물에 없는 Dog함수 가정... public void runDog() { System.out.println("Dog 발발~"); } |
[ Fish 클래스 함수 ] //동작 ///////////////////////////// 공통부분 public void cryFish() { System.out.println("Fish 멍멍~"); } public void eatFish() { System.out.println("Fish 사료 먹기"); } public void sleepFish() { System.out.println("Fish 쿨쿨~"); } ////////////////////////////////////// //다른 애완동물에 없는 Fish함수 가정... public void swimFish() { System.out.println("어푸어푸~"); } |
[ TestPet 클래스 함수 ] main 함수 포함 Cat c = new Cat("야옹이", 3, "암놈"); Cat c2 = new Cat("하늘이", 1, "숫놈"); Dog d = new Dog("누렁이",8,"암놈","검정"); Fish f = new Fish("골드",1,163.3); System.out.println(c.getName() + "\t" + c.getAge() + "\t" + c.getGender()); c.eatCat(); c.cryCat(); c.sleepCat(); System.out.println(c2.getName() + "\t" + c2.getAge() + "\t" + c2.getGender()); c2.eatCat(); c2.cryCat(); c2.sleepCat(); System.out.println(d.getName() + "\t" + d.getAge() + "\t" + d.getGender() + "\t" + d.getColor()); d.eatDog(); d.cryDog(); d.sleepDog(); d.runDog(); System.out.println(f.getName() + "\t" + f.getAge() + "\t" + f.getTailSize()); f.swimFish(); |
복붙해서 07Day2프로젝트 생성 - Pet 클래스 생성
■ Pet클래스는 아래 같이하고 + 전부 겟셋함수
■ 이제 Cat 자식클래스 수정해줄거임
ㄴ Cat 클래스에 extends Pet 추가하고,
ㄴPet클래스와 중복되고 있는 멤버변수 name, age 삭제
ㄴPet클래스와 중복되고 있는 (멤버변수 name, age의) 겟셋 함수 삭제
[ TestPet 클래스 출력 ]
■ 이제 Dog 자식클래스 수정해줄거임
ㄴ Dog 클래스에 extends Pet 추가하고,
ㄴPet클래스와 중복되고 있는 멤버변수 name, age 삭제
ㄴPet클래스와 중복되고 있는 (멤버변수 name, age의) 겟셋 함수 삭제
[ TestPet 클래스 출력 ]
ㄴ왜 위에 있냐면, c랑 d가 순차적으로 객체생성하면서부터
Cat c로 -> Cat클래스 호출하면서 -> Pet클래스까지 호출해서 그럼. 근데
Dog d로 -> Dog클래스 호출하면서 -> Pet클래스까지 호출해서 또 뜸.
아래 c.eatCat( ); 함수라든가, sysout( d.getName( ) ) 가 없어도
객체생성을 위해서, 호출 하는 순간 바로 뜨는 것.
■ Fish 클래스도 수정하고 출력해보기
ㄴc d f 가 순차적으로 객체생성하면서부터
이미 생성자 호출은 순차적으로 기본으로 뜨는거임.
함수호출이나 sysout을 해야만 뜨는게 아님.
복붙해서 07Day3프로젝트 생성
Pet클래스,
자식클래스들의 공통함수를 부모클래스에 구현해두기
[ TestPet 클래스 출력 ]
복붙해서 07Day4프로젝트 생성
오버라이딩 : (상속관계에 있는) 부모자식에 있는 똑같은 함수를 재정의한다
-(상속관계에 있는) 부모 클래스의 함수를 자식 클래스에서 원하는대로 정의는 그대로 따라가면서, 내용 수정
**오버로딩 : 함수 이름이 같지만, 매개변수의 순서나 갯수가 다를때
★자식클래스명 옆에 "extends 부모클래스명" 을 꼭 적어줘야,
오버라이딩 단축키를 썼을때, 부모클래스를 불러올 수 있음!!!!!!
ㄴcry함수가 Pet 클래스에도 있고, Cat 클래스에도 있지만,
ㄴCat클래스에 있는 cry함수가 오버라이딩 된거임
부모 클래스에 함수가 있어야하고,
자식 클래스가 그 함수를 오버라이딩할 때, ▼
ㄴ@Override 붙어있으면, 아 이 함수 부모에도 있는 함수구나 라고 알기만 하면 됨
ㄴ오버라이딩 함수 추가 완료
[ TestPet 클래스 출력 ]
*객체생성하면서부터, 호출해온 Cat생성자 안에 있는 출력문이 출력된 것
매개변수가 뭐든 상관없이
[ 객체생성하고 생성자호출 시, 생성자의 내용실행]
(예제) 만들어보기
복붙해서 07Day7프로젝트 생성
ㄴ super(sssn, name, address)는 기존에 Employee로 상속받아서 있던 변수들이고,
거기에 Manager 클래스의 멤버변수인 String depart를 추가한! 생성자인 것.
┌ 중복되는 멤버변수니까 이렇게 사용가능 ┐
super(ssn, name, address); this.depart = depart; |
= 같은거임 |
super(); this.ssn=ssn; this.name=name; this.address=address; this.depart = depart; |
08Day 프로젝트 생성
처음부터 싹~! 만들어보기
ㄴEmployee 준비
ㄴ Engineer 출력
ㄴEmployee에 출력문 추가하고 출력하면
ㄴ굳
내가 정리한 상속쓰기..?
1) 패키지 생성->부모자식클래스 생성->일단 멤버변수 먼저 생성(&초기화)
2) 멤버변수 다 입력하고 난 후,
기본생성자/전체생성자/겟셋함수 단축키로 추가
3) 자식클래스에 꼭!!! "extends 부모클래스" 넣어주기
4) 부모자식클래스 간의 중복되는 멤버변수,멤버함수는
부모클래스에 몰아주고 자식클래스에서는 삭제
5) 필요에 맞춰서 함수 내용 변경한 오버라이딩도 추가해주고,
6) Test클래스에서 출력
'Govern > Eclipse SE -상속,클래스,타입' 카테고리의 다른 글
07-26(월) 2.제네릭/컬렉션/ Iterator (0) | 2021.07.27 |
---|---|
07-26(월) 1.사용자예외클래스 throws/throw (0) | 2021.07.27 |
07-23(금) 2.클래스들,Array API, 예외처리조금 (0) | 2021.07.27 |
07-23(금) 1.커플링 중첩클래스 (0) | 2021.07.23 |
07-22(목) 다형성 instanceof 추상클래스 인터페이스 (0) | 2021.07.22 |