2023. 2. 1. 12:35ใjava
์์ ๊ฐ๋ฅ ์ฌ๋ถ๋ IS-A ๊ด๊ณ๊ฐ ์ถฉ์กฑ๋๋ฉด ๊ฐ๋ฅํ๋ค.
ex)
Student is a person
//์์ ๊ฐ๋ฅ ์ฌ๋ถ๋ IS-A ๊ด๊ณ๊ฐ ์ถฉ์กฑ๋๋ฉด ๊ฐ๋ฅ.
public class Phone { //๋ชจ๋ฐ์ผํฐ
int phoneNumber;
public void SendMsg(){
System.out.println("๋ฌธ์ ์ ์ก");
}
}
class Smartphone extends Phone{
String os;
public void playApp(){
System.out.println("์ฑ ์คํ");
}
}
--
public class PhoneTest1 {
public static void main(String[] args) {
Phone p1 = new Phone();
Smartphone p2 = new Smartphone();
//๋ค(์ํ)ํ(ํ๋ฅผ ๊ฐ์ง๋)์ฑ(์ง)
Phone p3 = new Smartphone();
Smartphone p4 = new Phone(); //์ค๋ฅ
}
}
๋ถ๋ชจ ํด๋์คํ์ผ๋ก ์์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑ ๊ฐ๋ฅ.
๋ถ๋ชจํด๋์คํ ๊ฐ์ฒด๋ช = new ์์ํด๋์ค์์ฑ์();
๋ถ๋ชจํด๋์ค์ ๋ณ์์ ๋ฉ์๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
p3.๋ถ๋ชจํด๋์ค ๊ธฐ๋ฅ๋ง ์ฌ์ฉ๊ฐ๋ฅํ ๊ฒ์ ๋ณผ ์ ์์
์ฐ์ต
public class Cake {
public void eatCake(){
System.out.println("์ผ์ต์ ๋จน๋ค.");
}
}
class CheeseCake extends Cake{
public void eatCheeseCake(){
System.out.println("์น์ฆ ์ผ์ต ๋จน๋ค.");
}
}
class StrawberryCheeseCake extends CheeseCake{
public void eatStrawberryCheeseCake(){
System.out.println("๋ธ๊ธฐ ์น์ฆ ์ผ์ต ๋จน๋ค.");
}
}
--
public class CakeTest {
public static void main(String[] args) {
Cake c1 = new CheeseCake();
//์น์ฆ ์ผ์ดํฌ์ง๋ง ์ฌ์ฉ์๋ ์ผ์ดํฌ์ ๊ธฐ๋ฅ๋ง ์ฌ์ฉ ๊ฐ๋ฅ. ๋ฉ์๋ 1๊ฐ๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
Cake c2 = new StrawberryCheeseCake();
CheeseCake c3 = new Cake(); //์ค๋ฅ
CheeseCake c4 = new StrawberryCheeseCake();
StrawberryCheeseCake c5 = new Cake(); //์ค๋ฅ
}
}
์์์์ ํ๋ณํ๋ ๊ฐ๋ฅํ๋ค.
c1์ ํ ๋ณํ ์ ๋ฉ์๋ ํ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ.
CheeseCake cc1 = (CheeseCake)c1;
ํ ๋ณํ์ ํตํด ๊ฐ์ฒด์ ์๋ฃํ์ ๋ณ๊ฒฝํ ์ ์๊ณ , ๋ณ์ ๋ฐ ๋ฉ์๋๋ ๋ค ์ฌ์ฉํ ์ ์๋ค.
CheeseCake c4 = new StrawberryCheeseCake();
Cake cc4 = (Cake)c4;
cc4.eatCake();
์์ ๊ฐ์ด๋ ๊ฐ๋ฅ
์์ ๋ฐ์ ๋ถ๋ชจ ํด๋์ค์ ๋ถ๋ชจํด๋์ค๋ก๋ ํ๋ณํ ๊ฐ๋ฅํ๊ณ
ํ๋ณํ ์ ํ๋ณํ ํ ํด๋์ค์ ๋ฉ์๋๋ง ์ฌ์ฉํ ์ ์๋ค.
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ (๋ฌด์กฐ๊ฑด ์์๊ด๊ณ์์๋ง ๋์ด)
public class Animal {
public void sound(){
System.out.println("๋๋ฌผ์ด ์๋๋ค.");
}
}
class Dog extends Animal{
//๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
public void sound(){
System.out.println("๋ฉ๋ฉ"); //๋ถ๋ชจํด๋์ค์ ๊ธฐ๋ฅ์ ์์ํด๋์ค์์ ๋ฎ์ด์ ํ์ฉ.
}
}
์์ ๊ด๊ณ์์ ๋ถ๋ชจํด๋์ค์์ ์ ์ธ๋ ๋ฉ์๋๋ช ๊ณผ ๋งค๊ฐ๋ณ์๋ฅผ ๋์ผํ๊ฒ ์์ํด๋์ค์์
์ ์ธํ๋ฉด ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ์ฉํ๋ค.
๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ์์ํด๋์ค์์ ๋ฎ์ด์.
์ค๋ฒ๋ผ์ด๋ฉ์ผ๋ก ๊ตฌํ๋ ๋ฉ์๋๋ ์์ ํด๋์ค์์ ์ฌ์ ์๋ ๋ฉ์๋๋ง ํธ์ถ ๊ฐ๋ฅ! (ํด๋์ค์ ์ธ๋ถ์์)
๊ทธ๋ฌ๋ ํด๋น ํด๋์ค ๋ด๋ถ(์ค๋ฒ๋ผ์ด๋ฉ์ ํ๊ณ ์๋)์์๋ ๋ถ๋ชจ ํด๋์ค ํธ์ถ ๊ฐ๋ฅ
๋ถ๋ชจํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋์๋ super.์ ์ฌ์ฉํ๋ค.
class Dog extends Animal{
//๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
public void sound(){
super.sound(); //ํด๋์ค ๋ด๋ถ์์๋ ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋ ํธ์ถ ๊ฐ๋ฅ
System.out.println("๋ฉ๋ฉ"); //๋ถ๋ชจํด๋์ค์ ๊ธฐ๋ฅ์ ์์ํด๋์ค์์ ๋ฎ์ด์ ํ์ฉ.
}
}
**
์์
- ์ฝ๋๋ฅผ ์ฌํ์ฉํด์ ๊ฐํธํ๊ฒ ํด๋์ค๋ฅผ ๋ง๋๋ ๋ฌธ๋ฒ.
- ์ฐ๊ด์ด ์๋(์์์ผ๋ก ๊ด๊ณ๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด) ์ฌ๋ฌ ํด๋์ค์ ๊ณตํต์ ๊ท์ฝ์ ์ค์ผ๋ก์จ ์ผ๊ด์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ๋ค.
์
์น๊ตฌ ์ง์ ๊ฐ์์ง, ๊ณ ์์ด ๊ด๋ฆฌ ์์คํ ์ ๋ง๋ค์ด์ค๋ค๊ณ ํ์.
์ด 5๋ง๋ฆฌ๊ฐ ๊ด๋ฆฌ๋๋ค๊ณ ํ๋ค.
๊ฐ๊ฐ ๊ฐ์ฒด์ ์๋ ๋ชจ๋ฅด๋ ์ํฉ์์ ์์คํ ์ ๋ง๋ค์.
์ฐ์ ๊ณต๊ฐ 5๊ฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋๋ฐ, ๋์ ์๋ฃํ์ด ๋ค๋ฅด๋๊น ํ๋์ ๋ฐฐ์ด์ ๋ฃ์ ์ ์๋ค.
Puppy p1 = new Cat (x)
๊ทธ๋์ ์์์ ํตํด ํน์ ๋ ์ฐ๊ด์ฑ์ ๋ง๋ค์ด์ค.
์ฌ์ค ๋ํฌ๋ ๋ถ๋ชจ ํด๋์ค(๋๋ฌผ)๊ฐ ๊ฐ์
๋๋ฌผ์ด ๊ฐ์ง๋ ๊ณต๊ฐ 5๊ฐ๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๊ณ ์์ด ๊ฐ์์ง ๋ชจ๋ ๋ค์ด๊ฐ ์ ์๋ค.
Ani[] cages = new Ani[5];
//๋คํ์ฑ์ ํตํด ์๋์ฒ๋ผ ๊ฐ๋ฅ
cages[0] = new Ani();
cages[0] = new Cat();
cages[0] = new Puppy();
๋คํ์ฑ์ ํตํด ๊ฐ์ฒด ์ผ์ด์ง๋ผ๋ ๋ฐฐ์ด์ ๊ณ ์์ด์ ๊ฐ์์ง๊ฐ ์์๋ก ๋ค์ด๊ฐ ์ ์์.
>>๊ด๋ จ์ด ์๋ ๊ฒ๋ค์ ์ฝ๊ฒ ๊ด๋ฆฌ ํ ์ ์์
cages[0] = new Cat();
cages[1] = new Cat();
cages[2] = new Cat();
cages[3] = new Puppy();
cages[4] = new Puppy();
>>๊ทธ๋ฌ๋ ๊ฐ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์
>>์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ.
cages[0].soundCat(); //์ค๋ฅ
์ค๋ฒ๋ผ์ด๋ฉ
class Ani{
public void sound(){
System.out.println("์ด๋ค.");
}
}
public class Cat extends Ani{
public void sound(){
System.out.println("์ผ์น~");
}
}
class Puppy extends Ani{
public void sound(){
System.out.println("๋ฉ๋ฉ!");
}
}
--
public class AnimalManage {
public static void main(String[] args) {
//๊ฐ์์ง, ๊ณ ์์ด๋ฅผ ์ ์ฅํ ๊ณต๊ฐ 5๊ฐ ๋ง๋ค์ด์ผ ํจ.
Ani[] cages = new Ani[5];
cages[0] = new Cat();
cages[1] = new Cat();
cages[2] = new Cat();
cages[3] = new Puppy();
cages[4] = new Puppy();
for(int i = 0; i < cages.length ; i++){
cages[i].sound();
}
}
}
sound ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด ์๋ ๊ณ ์์ด ๊ฐ์์ง๊ฐ ๊ฐ์ง ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ. >> ๋คํ์ฑ๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฐ๋ ์ด์
'java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Object (0) | 2023.02.01 |
---|---|
์ธ๋งฅ๊ด๋ฆฌํ๋ก๊ทธ๋จ (์์,๋คํ์ฑ,์ค๋ฒ๋ผ์ด๋ฉ) (0) | 2023.02.01 |
์์ (0) | 2023.01.31 |
๋ฉ์๋ ์ค๋ฒ ๋ก๋ฉ (0) | 2023.01.31 |
static (0) | 2023.01.31 |