μ€λμ κ΅λΉ 7μΌ μ°¨ μμ λ³΅μ΅ λ΄μ© μ 리λ₯Ό ν΄λ³΄κ² μ΅λλ€.
볡μ΅
κ°μ²΄(Object) : μΈμ€ν΄μ€ κ°μ κ°μ²΄λ€μ μ΄μ§ν© λ¨μ
μΈμ€ν΄μ€ : ν΄λΉ κ°μ²΄κ° μ΄λ€ ν΄λμ€λ‘λΆν° μμ±λ κ²μΈμ§λ₯Ό κ°μ‘°νλ€.
μμ
λΆλͺ¨ ν΄λμ€(μμ ν΄λμ€)μ μ½λλ₯Ό μμ ν΄λμ€(νμ ν΄λμ€)κ° μ λΆ 'μ¬μ¬μ©' ν μ μλ€.
(ν΄λμ€λ₯Ό μμλ°μΌλ©΄ ν΄λΉ ν΄λμ€μ μ½λλ₯Ό μ λΆ μ¬μ¬μ© ν μ μλ€.)
"μ μ§λ³΄μ μ©μ΄μ± κ·Ήλν" == κ°λ°μλ€μ μ΅μ’ λͺ©ν
μ½λλ₯Ό μκ² μκ² μλΌμΌν¨ == λͺ¨λν (μ»΄ν¬λνΈν, ν¨μν)
--> μ½λ μ¬ μ¬μ©μ± μ¦κ°
μ΄μ μμμ λν΄ μ½λλ₯Ό 보며 μμ보λλ‘ νμ.
class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
System.out.println("λΆλͺ¨μμ±μ νΈμΆ");
}
void PrintInfo() {
System.out.println("("+this.x+","+this.y+")");
}
void move() {
this.x++;
this.y++;
}
}
// ν΄λμ€λ₯Ό μμλ°μΌλ©΄
// ν΄λΉ ν΄λμ€μ μ½λλ₯Ό μ λΆ μ¬μ¬μ©ν μ μλ€.
class ColorPoint extends Point{
String color;
ColorPoint(String color,int x, int y) {
// μμν΄λμ€μ λͺ¨λ μμ±μλ€μ
// κ°μ₯ λ¨Όμ λΆλͺ¨ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό νΈμΆνλ€.
// 1. λΆλͺ¨ ν΄λμ€μ κΈ°λ³Έ μμ±μλ₯Ό μ μΈ(μ μ) (λλΆλΆ μ΄λ κ² νλ©΄ μλ¨)
// => λ¨Όμ μμ±λ μ½λλ₯Ό λμ€μ μμ±λλ μ½λλλ¬Έμ λ³κ²½νλ€?
// => λλΆλΆ μλͺ»λ ν΄κ²°λ°©μ ...!
// : κΈ°λ³Έμμ±μλ₯Ό μ¬μ©νμ§ μλ μ΄μ λ "κ°μ μ± λλ¬Έμ΄λ€."
// κΈ°λ³Έ μμ±μλ₯Ό λ§λ€μ΄λ²λ¦°λ€? κ·ΈλΌ κ°μ μ±μ΄ μ¬λΌμ§κ² λ¨
// 2. λΆλͺ¨ ν΄λμ€μκ² μ‘΄μ¬νλ λ€λ₯Έ μμ±μλ₯Ό λμ μ¬μ©νλκ² μ’λ€
//
//
super(x, y);
// μμ ν΄λμ€μ κ°μ²΄λ₯Ό λ§λ€λμλ
// λΆλͺ¨ ν΄λμ€μ μμ±μ μ νΈμΆ ---> μμ ν΄λμ€μ μμ±μ νΈμΆ
this.color = color;
System.out.println("μμ μμ±μ νΈμΆλ¨ ");
}
}
public class ObjectOrientedLangPoint {
public static void main(String[] args) {
Point p1 = new Point();
p1.PrintInfo();
p1.move();
p1.PrintInfo();
ColorPoint p2 = new ColorPoint();
p2.color = "λΆν";
p2.x = 10;
p2.y = 20;
p2.PrintInfo();
p2.move();
p2.PrintInfo();
}
}
μμ μ°μ΅λ¬Έμ
μ΄μ μμμ λν΄ μμ보μμΌλ μ°μ΅λ¬Έμ λ₯Ό νλ©° μμΈν μμκ°λ³΄λλ‘ ν©μλ€.
μ Circle
- int radius λ°μ§λ¦
- double PI 3.14. μμ£Όμ¨
μ¬κ°ν Rectangle
- int x,y (κ°λ‘ μΈλ‘)
- λμ΄ κ³±νλ©΄ λμ΄(area)
μꡬμ¬ν
1. μ΄λ¦μ΄ μλ λͺ¨μ κ°μ²΄λ μμ
2. μ΄λ€ λͺ¨μμ μμ λ³λλ‘ μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έ μμ κ²μ
3. μμ κ²½μ° , λ°μ§λ¦μ λ³λλ‘ μ§μ νμ§ μμΌλ©΄ κΈ°λ³Έ 1
4. new μ¬κ°ν (10) == μ μ¬κ°ν
5. new μ¬κ°ν (10,20) == μ§μ¬κ°ν
class Shape {
String name;
double area;
String color;
Shape(String name) {
this(name,"κ²μ ");
}
Shape(String name,String color) {
this.name=name;
this.color=color;
this.area=0.0;
}
void draw() {
System.out.println(this.color+"μ "+this.name+"λͺ¨μ λμ΄ : "+this.area);
}
void setArea() {
System.out.println("Shapeμμ νΈμΆν setArea()");
}
}
class Circle extends Shape {
int radius;
static final double PI=3.14; // final == μμν, static == ν΄λμ€λ³μ => λ°λ‘ μ΄κΈ°ν
Circle(){
this(1,"κ²μ ");
}
Circle(String color){
this(1,color);
}
Circle(int radius){
this(radius,"κ²μ ");
}
Circle(int radius,String color){
super("μ",color);
this.radius=radius;
///this.setArea();
}
@Override
void setArea() {
System.out.println("Circleμμ νΈμΆν setArea()");
this.area=this.radius*this.radius*Circle.PI;
}
}
class Rectangle extends Shape {
int x;
int y;
Rectangle(int x){
this(x,"κ²μ ");
}
Rectangle(int x,String color){
super("μ μ¬κ°ν",color);
this.x=x;
this.y=x;
///this.setArea();
}
Rectangle(int x,int y){
this(x,y,"κ²μ ");
}
Rectangle(int x,int y,String color){
super("μ§μ¬κ°ν",color);
this.x=x;
this.y=y;
///this.setArea();
}
// μ€λ²λ‘λ© : ν¨μλͺ
μ€λ³΅μ μ νμ©
// μ€λ²λΌμ΄λ© : λ©μλ μ¬μ μ
@Override // @ μ΄λ
Έν
μ΄μ
,μ λν
μ΄μ
void setArea() {
System.out.println("Rectangleμμ νΈμΆν setArea()");
this.area=this.x*this.y;
}
}
/*
[μꡬμ¬νλλ‘ λ¬Έμ ν΄κ²°νκΈ°]
λͺ¨μ Shape
String name μ΄λ¦
double area λμ΄
String color μ
void draw()
γ
γ
μ γ
γ
λͺ¨μμ γ
γ
.γ
γ
λ§νΌμ λμ΄
μ Circle
int radius λ°μ§λ¦
double PI 3.14 μμ£Όμ¨
μ¬κ°ν Rectangle
int x,y κ°λ‘,μΈλ‘
μꡬμ¬ν
1. μ΄λ¦μ΄ μλ λͺ¨μ κ°μ²΄λ μμ
2. μ΄λ€ λͺ¨μμ μμ λ³λλ‘ μ§μ νμ§μμΌλ©΄ κΈ°λ³Έ μμ κ²μ
3. μμ κ²½μ°, λ°μ§λ¦μ λ³λλ‘ μ§μ νμ§μμΌλ©΄ κΈ°λ³Έ 1
4. new μ¬κ°ν(10) == μ μ¬κ°ν
5. new μ¬κ°ν(10,20) == μ§μ¬κ°ν
*/
public class InheritanceShapeAnswer {
public static void main(String[] args) {
Shape s=new Shape("λͺ¨μ");
s.setArea();
Circle c=new Circle(1);
c.setArea();
Rectangle r=new Rectangle(10);
r.setArea();
// κ°μ²΄μ§ν₯μ ν΅μ¬
// κ°μ λ©μλλ₯Ό μνμμΌλ
// λ€λ₯Έ 주체μκ° μννλ€λ©΄
// λ€λ₯Έ κ²°κ³Όκ° λμ¨λ€.
}
}
μ°μ΅λ¬Έμ 2
Animal μ€μ΅μ DOG μΆκ°
Cat c. hello μΌμΉ
Dog d. hello λ©λ©
class Animal {
String type;
String name;
Animal(String type) {
this(type,"무λͺ
");
}
Animal(String type, String name) {
this.type = type;
this.name = name;
}
void hello() {
System.out.println(this.type+ " " +this.name);
}
}
class Cat extends Animal { // μνμ λμ΄
Cat() { // κ³ μμ΄ κ°μ²΄λ νμ
μ΄ μ£λ€ κ³ μμ΄κ³
// μ΄λ¦μ μ νμ§ μμΌλ©΄ λλΉμ΄λ€.
this("λλΉ");
}
Cat(String name) {
super("κ³ μμ΄",name);
} @Override
void hello() {
System.out.println(this.type +" "+ this.name + "κ° μΌμΉ~ νκ³ μ΄λ€.");
}
}
class Dog extends Animal {
Dog() {
this("백ꡬ");
}
Dog(String name) {
super("κ°μμ§",name);
}
@Override
void hello() {
System.out.println(this.type +" "+ this.name+"κ° λ©λ©! νκ³ μ§λλ€.");
}
}
public class AnimalAddDog {
public static void main(String[] args) {
Cat κΈΈκ³ μμ΄=new Cat();
System.out.println();
Cat cat=new Cat("ꡬλμ΄");
κΈΈκ³ μμ΄.hello();
cat.hello();
Dog dog = new Dog("컀νΌ");
dog.hello();
// 02
// 04
// 03
λ§λ¬΄λ¦¬
μ€λμ μμν΄λμ€μ λΆλͺ¨ν΄λμ€μ μμμ λν΄ μμ보μμ΅λλ€.
μμμΌ ν μ§μμ΄ λ§μμ 머리μμ΄ λ³΅μ‘νλ€μ
μ λ λ€μ μλ‘μ΄ λ΄μ©μΌλ‘ μ°Ύμμ€κ² μ΅λλ€.
λ΄μ£Όμ λΆλ€ λͺ¨λ κ°μ¬ν©λλ€.
'νμ€ν κ°λ°μ μμ±κ³Όμ πͺ« > γ Java γ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] λλ¬Όμ μ² μ½λ μμ± (0) | 2024.07.10 |
---|---|
[Java] κ°μ²΄ μ¬ν (0) | 2024.07.10 |
[Java] κ°μ²΄(Object)μ Class (1) | 2024.07.03 |
[Java] ν¨μμ μ¬λ¬κ°μ§ μ νκ³Ό ForEachλ¬Έ (2) | 2024.07.02 |
[Java] μ΄μ€ forλ¬Έκ³Ό λ°°μ΄ (0) | 2024.07.02 |