day28

μƒμ€πŸ‘ΈΒ·2023λ…„ 11μ›” 20일
0

λšœλ²…λšœλ²… 첫번째

λͺ©λ‘ 보기
22/26
post-thumbnail

πŸ“–μƒμ† - λΆ€λͺ¨λ‘œλΆ€ν„° λ¬Όλ €λ°›κΈ°

λΆ€λͺ¨μš”μ†Œμ— μžˆλŠ”, ν•„λ“œλ₯Ό μž¬μ‚¬μš©μ΄ κ°€λŠ₯

  • ν•„λ“œ λ³€μˆ˜
  • ν•„λ“œ λ©”μ†Œλ“œ
public class Inheritance002 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		People p1 = new People();
		p1.name = "μ‚¬λžŒ";
		p1.age = 15;
		p1.sleep();
		
		SalaryMan s1 = new SalaryMan();
		s1.salary = 50000;
		s1.name = "직μž₯인"; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s1.age = 40; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s1.sleep(); //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œ κ°€μ Έμ™€μ„œ μ“Έ 수있음!
		s1.work();
		
		Student s2 = new Student();
		s2.grade = 6;
		s2.name = "학생"; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s2.age = 13; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s2.sleep(); //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œ κ°€μ Έμ™€μ„œ μ“Έ 수있음!
		s2.study();
	}

}

class People { //μ‚¬λžŒ
	String name; //이름
	int age; //λ‚˜μ΄
	
	//λ©”μ†Œλ“œ
	void sleep() {
		System.out.println("μž”λ‹€");
	}
}

class SalaryMan extends People { //직μž₯인 -> μ‚¬λžŒ 상속
	int salary; //μ›”κΈ‰
	
	//λ©”μ†Œλ“œ
	void work() {
		System.out.println("일 ν•œλ‹€");
	}
	
	void sleep() { //λΆ€λͺ¨ λ©”μ†Œλ“œ μž¬μ •μ˜ : μ˜€λ²„λΌμ΄λ”© (λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘μ„±!) -> μ—…κ·Έλ ˆμ΄λ“œ!
		System.out.println("κΈ°μ ˆν•˜λ“―μ΄ μž”λ‹€");
	}
	
	void sleep(int hour) { //μ˜€λ°”λΌμ΄λ”©X (λ³€μˆ˜κ°€ μΆ”κ°€λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— λ‹€λ₯Έκ²ƒ!!) / μ˜€λ²„λ‘œλ”©O
		System.out.println(hour + "μ‹œκ°„ κΈ°μ ˆν•˜λ“―μ΄ μž”λ‹€");
	}
}

class Student extends People { //학생 -> μ‚¬λžŒ 상속
	int grade; //ν•™λ…„
	
	//λ©”μ†Œλ“œ
	void study() {
		System.out.println("곡뢀 ν•œλ‹€");
	}
	
	void sleep() { //λΆ€λͺ¨ λ©”μ†Œλ“œ μž¬μ •μ˜ : μ˜€λ²„λΌμ΄λ”© (λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘μ„±!) -> μ—…κ·Έλ ˆμ΄λ“œ!
		System.out.println("μ—Žλ“œλ €μ„œ μž”λ‹€");
	}
}

πŸ’»

1.

λΆ€λͺ¨ν΄λž˜μŠ€ People
μžμ‹ν΄λž˜μŠ€ SalaryMan extends People
μžμ‹ν΄λž˜μŠ€ Student extends People

2.

λΆ€λͺ¨ν΄λž˜μŠ€ People μ•ˆμ—

//ν•„λ“œλ³€μˆ˜
String name; //이름
int age; //λ‚˜μ΄

//λ©”μ†Œλ“œ
void sleep() {
		System.out.println("μž”λ‹€");
	}

λ₯Ό μžμ‹ν΄λž˜μŠ€ SalaryMan, μžμ‹ν΄λž˜μŠ€ Student κ°€ κ°€μ Έμ™€μ„œ μ“Έ 수 μžˆλ‹€

3.

μžμ‹ν΄λž˜μŠ€ SalaryMan에 μžˆλŠ”

//λ©”μ†Œλ“œ
	void work() {
		System.out.println("일 ν•œλ‹€");
	}

μžμ‹ν΄λž˜μŠ€ Student에 μžˆλŠ”

//λ©”μ†Œλ“œ
	void study() {
		System.out.println("곡뢀 ν•œλ‹€");
	}

λ©”μ†Œλ“œλ“€μ€ λΆ€λͺ¨ν΄λž˜μŠ€ Peopleμ—μ„œ κ°€μ Έκ°€μ„œ 쓰지 λͺ»ν•œλ‹€
πŸš¨λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜, λ©”μ†Œλ“œλ₯Ό μžμ‹ν΄λž˜μŠ€μ—μ„œ κ°€μ Έλ‹€κ°€ μ“°λŠ” 것!!

4. μ˜€λ²„λΌμ΄λ”© : λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œ μž¬μ •μ˜

- λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μ„ μ–Έ!
- μ ‘κ·Ό μ œν•œμžλ₯Ό 더 κ°•λ ₯ν•˜κ²Œ ν•  수 μ—†λ‹€. (λΆ€λͺ¨ public -> μžμ‹ private XXX)
	 	  λΆ€λͺ¨ default, protected -> μžμ‹ public OOO // λΆ€λͺ¨κ°€ private이면 X
- μƒˆλ‘œμš΄ μ˜ˆμ™Έ throws λΆˆκ°€λŠ₯  
class People { //μ‚¬λžŒ
	//λ©”μ†Œλ“œ
	void sleep() {
		System.out.println("μž”λ‹€");
	}
}

class SalaryMan extends People { //직μž₯인 -> μ‚¬λžŒ 상속
	//λ©”μ†Œλ“œ
	void work() {
		System.out.println("일 ν•œλ‹€");
	}	
	
	void sleep() { //λΆ€λͺ¨ λ©”μ†Œλ“œ μž¬μ •μ˜ : μ˜€λ²„λΌμ΄λ”© (λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘μ„±!) -> μ—…κ·Έλ ˆμ΄λ“œ!
		System.out.println("κΈ°μ ˆν•˜λ“―μ΄ μž”λ‹€");
	}
	
	void sleep(int hour) { //μ˜€λ°”λΌμ΄λ”©X (λ³€μˆ˜κ°€ μΆ”κ°€λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— λ‹€λ₯Έκ²ƒ!!) / μ˜€λ²„λ‘œλ”©O
		System.out.println(hour + "μ‹œκ°„ κΈ°μ ˆν•˜λ“―μ΄ μž”λ‹€");
	}
}

5. super()

public class Inheritance002 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		People p1 = new People("μ‚¬λžŒ", 15);
//		p1.name = "μ‚¬λžŒ";
//		p1.age = 15;
		p1.sleep();
		p1.die();
		
		SalaryMan s1 = new SalaryMan();
		s1.salary = 50000;
		s1.name = "직μž₯인"; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s1.age = 40; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s1.sleep(); //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œ κ°€μ Έμ™€μ„œ μ“Έ 수있음! -> μž¬μ •μ˜λœ λ©”μ†Œλ“œκ°€ λΆˆλŸ¬μ§„λ‹€
		s1.sleepOriginal(); //-> λΆ€λͺ¨ν΄λž˜μŠ€μ˜ 원본 sleep()
		s1.sleep(8);
		s1.work();
		s1.die();
		
		Student s2 = new Student(6);
//		s2.grade = 6;
		s2.name = "학생"; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s2.age = 13; //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ³€μˆ˜ κ°€μ Έμ™€μ„œ μ“Έ 수 있음!
		s2.sleep(); //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œ κ°€μ Έμ™€μ„œ μ“Έ 수있음! -> μž¬μ •μ˜λœ λ©”μ†Œλ“œκ°€ λΆˆλŸ¬μ§„λ‹€
		s2.study();
		s2.die();
	}

}

class People { //μ‚¬λžŒ    //ν΄λž˜μŠ€μ—λ‹€κ°€λ„ final λΆ™μΌμˆ˜λŠ” μžˆλŠ”λ° 싀무에선 거의 μ•ˆλΆ™μž„~
	String name; //이름
	int age; //λ‚˜μ΄
		
	//μƒμ„±μž
	public People(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	//λ©”μ†Œλ“œ
	void sleep() {
		System.out.println("μž”λ‹€");
	}
	
	final void die() { //final λ©”μ†Œλ“œ -> μž¬μ •μ˜x
		System.out.println("μ£½λŠ”λ‹€...");
	}
}

class SalaryMan extends People { //직μž₯인 -> μ‚¬λžŒ 상속
	int salary; //μ›”κΈ‰
	
	//μƒμ„±μž
	public SalaryMan() { //λ‚΄ μƒμ„±μž
//		super(); //λΆ€λͺ¨ν΄λž˜μŠ€ κΈ°λ³Έμƒμ„±μž 호좜 -> ν˜„μž¬λŠ” κΈ°λ³Έμƒμ„±μžκ°€ μ—†μ–΄μ„œ X
		super(null, 0); //λΆ€λͺ¨ν΄λž˜μŠ€ μƒμ„±μžκ°€ λ§€κ°œλ³€μˆ˜κ°€ 2개 μžˆλŠ” ν˜•νƒœλ§Œ μžˆλ‹€ (이름,λ‚˜μ΄)
		
		this.salary = 0; //λ‚΄ ν•„λ“œ μ΄ˆκΈ°ν™”!
	}
	
	//λ©”μ†Œλ“œ
	void work() {
		System.out.println("일 ν•œλ‹€");
	}	
	
	void sleep() { //λΆ€λͺ¨ λ©”μ†Œλ“œ μž¬μ •μ˜ : μ˜€λ²„λΌμ΄λ”© (λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘μ„±!) -> μ—…κ·Έλ ˆμ΄λ“œ!
		System.out.println("κ·Έλƒ₯ κΈ°μ ˆν•œκ±°μ²˜λŸΌ μž”λ‹€");
	}
	
	void sleepOriginal() {
		super.sleep(); //λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” sleep()이 λΆˆλ €μ§„λ‹€!
	}
	
	void sleep(int hour) { //μ˜€λ²„λΌμ΄λ”©X (λ³€μˆ˜κ°€ μΆ”κ°€λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— λ‹€λ₯Έκ²ƒ!!) / μ˜€λ²„λ‘œλ”©O
		System.out.println(hour + "μ‹œκ°„ κΈ°μ ˆν•˜λ“―μ΄ μž”λ‹€");
	}
	
	/*
	void die() { // Cannot override the final method from People -> finalλ©”μ†Œλ“œλŠ” μ˜€λ²„λΌμ΄λ”©X
		System.out.println("μžˆλŠ”λˆ λ‹€μ“°κ³  μ£½λŠ”λ‹€..");
	}
	*/
}

class Student extends People { //학생 -> μ‚¬λžŒ 상속
	int grade; //ν•™λ…„
	
	//μƒμ„±μž
	public Student(int grade) {
//		super(); //λΆ€λͺ¨ν΄λž˜μŠ€μ˜ κΈ°λ³Έμƒμ„±μž 호좜
		super(null, 0); //λΆ€λͺ¨ν΄λž˜μŠ€ μƒμ„±μžκ°€ λ§€κ°œλ³€μˆ˜κ°€ 2개 μžˆλŠ” ν˜•νƒœ! (이름,λ‚˜μ΄)
		this.grade = grade;
	}
	
	public Student(String name, int age, int grade) { //name,ageλŠ” λΆ€λͺ¨ν΄λž˜μŠ€κΊΌλΌ!
		super(name,age); //λΆ€λͺ¨ν΄λž˜μŠ€μ— λ„˜κ²¨λ²„λ¦¬κ³ 
		this.grade = grade;
	}
	 
	//λ©”μ†Œλ“œ
	void study() {
		System.out.println("곡뢀 ν•œλ‹€");
	}
	
	void sleep() { //λΆ€λͺ¨ λ©”μ†Œλ“œ μž¬μ •μ˜ : μ˜€λ²„λΌμ΄λ”© (λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘μ„±!) -> μ—…κ·Έλ ˆμ΄λ“œ!
		System.out.println("μ—Žλ“œλ €μ„œ μž”λ‹€");
	}
}

5.

μƒμ„±μžλ₯Ό μƒμ„±ν• λ•ŒλŠ” 항상 super();이 ν¬ν•¨λœμ±„λ‘œ μƒμ„±λ˜λŠ”κ±°μ•Ό~! 근데 κΈ°λ³Έμƒμ„±μžλΌ μžˆμœΌλ‚˜ λ§ˆλ‚˜ λΌμ„œ μƒλž΅ν•˜κ³  μ‚¬μš© ν–ˆλ˜κ±΄λ°

People ν΄λž˜μŠ€μ—μ„œ μ΄λ ‡κ²Œ μƒμ„±μžκ°€ λ§€κ°œλ³€μˆ˜ 2개 μžˆλŠ”κ±°λ§Œ μžˆλ‹€λ©΄

//μƒμ„±μž
	public People(String name, int age) {
		this.name = name;
		this.age = age;
	}

SalaryMan ν΄λž˜μŠ€μ—μ„œλŠ” λΆ€λͺ¨ν΄λž˜μŠ€μ— κΈ°λ³Έμƒμ„±μžκ°€ μ—†κ³  λ§€κ°œλ³€μˆ˜κ°€ 2개 μžˆλŠ” μƒμ„±μžκ°€ 있기 λ•Œλ¬Έμ— super(λ§€κ°œλ³€μˆ˜, λ§€κ°œλ³€μˆ˜); μž‘μ„±ν•΄μ•Όν•œλ‹€~!

	//μƒμ„±μž
	public SalaryMan() { //λ‚΄ μƒμ„±μž
//		super(); //λΆ€λͺ¨ν΄λž˜μŠ€ κΈ°λ³Έμƒμ„±μž 호좜 -> ν˜„μž¬λŠ” κΈ°λ³Έμƒμ„±μžκ°€ μ—†μ–΄μ„œ X
		super(null, 0); //λΆ€λͺ¨ν΄λž˜μŠ€ μƒμ„±μžκ°€ λ§€κ°œλ³€μˆ˜κ°€ 2개 μžˆλŠ” ν˜•νƒœλ§Œ μžˆλ‹€ (이름,λ‚˜μ΄)
		
		this.salary = 0; //λ‚΄ ν•„λ“œ μ΄ˆκΈ°ν™”!
	}

Student ν΄λž˜μŠ€μ—μ„œλŠ” name,ageκ°€ λΆ€λͺ¨ν΄λž˜μŠ€ λ³€μˆ˜λΌμ„œ 이λ₯Ό μ“°λ €λ©΄ super(name,age)둜 λΆ€λͺ¨ν΄λž˜μŠ€μ— λ„˜κ²¨λ²„λ¦¬κ³  μƒμ„±μžλ₯Ό μ΄μš©ν•œλ‹€!

public Student(int grade) {
//	super(); //λΆ€λͺ¨ν΄λž˜μŠ€μ˜ κΈ°λ³Έμƒμ„±μž 호좜
	super(null, 0); //λΆ€λͺ¨ν΄λž˜μŠ€ μƒμ„±μžκ°€ λ§€κ°œλ³€μˆ˜κ°€ 2개 μžˆλŠ” ν˜•νƒœ! (이름,λ‚˜μ΄)
	this.grade = grade;
}

public Student(String name, int age, int grade) { //name,ageλŠ” λΆ€λͺ¨ν΄λž˜μŠ€κΊΌλΌ!
		super(name,age); //λΆ€λͺ¨ν΄λž˜μŠ€μ— λ„˜κ²¨λ²„λ¦¬κ³ 
		this.grade = grade;
}

μ΅œμ’…πŸ’»

profile
λ’€μ£½λ°•μ£½ 벨둜그

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보