λΆλͺ¨μμμ μλ, νλλ₯Ό μ¬μ¬μ©μ΄ κ°λ₯
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("μλλ €μ μλ€");
}
}
π»
λΆλͺ¨ν΄λμ€ People
μμν΄λμ€ SalaryMan extends People
μμν΄λμ€ Student extends People
λΆλͺ¨ν΄λμ€ People μμ
//νλλ³μ
String name; //μ΄λ¦
int age; //λμ΄
//λ©μλ
void sleep() {
System.out.println("μλ€");
}
λ₯Ό μμν΄λμ€ SalaryMan, μμν΄λμ€ Student κ° κ°μ Έμμ μΈ μ μλ€
μμν΄λμ€ SalaryManμ μλ
//λ©μλ
void work() {
System.out.println("μΌ νλ€");
}
μμν΄λμ€ Studentμ μλ
//λ©μλ
void study() {
System.out.println("κ³΅λΆ νλ€");
}
λ©μλλ€μ λΆλͺ¨ν΄λμ€ Peopleμμ κ°μ Έκ°μ μ°μ§ λͺ»νλ€
π¨λΆλͺ¨ν΄λμ€μ μλ λ³μ, λ©μλλ₯Ό μμν΄λμ€μμ κ°μ Έλ€κ° μ°λ κ²!!
- λΆλͺ¨ λ©μλμ λμΌνκ² μ μΈ!
- μ κ·Ό μ νμλ₯Ό λ κ°λ ₯νκ² ν μ μλ€. (λΆλͺ¨ 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 + "μκ° κΈ°μ νλ―μ΄ μλ€");
}
}
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("μλλ €μ μλ€");
}
}
μμ±μλ₯Ό μμ±ν λλ νμ 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;
}
μ΅μ’
π»