본문 바로가기
java&eclipse 코딩 알고리즘/20231215

PolymorphismTest

by 몽상크리에이터 2023. 12. 15.

package com.tjoeun.abstractClass;

import java.util.Scanner;

// 다형성(Polymorphism) 이란 같은 메소드가 서로 다른 클래스에서 다양하게 사용되는 것을 말한다.

// 다형성 구현하기 위해서는 다형성을 구현할 메소드가 포함된 모든 클래스가 같은 부모 클래스

// 또는 인터페이스(상수 필드와 추상 메소드만 가질 수 있다.)를 가져야 하고 부모와 자식에 같은 이름의 메소드가 있어야 하며

// 자식 클래스에서 상속받은 추상 메소드를 무조건 Override 시켜서 사용해야 한다.

// 부모 클래스 타입에 객체에 자식 클래스 타입의 객체를 대입(UpCasting)해서 다형성이 구현된 메소드를 실행한다.

abstract class Shape {

int x, y;

void move() {} //일반 메소드

abstract void draw(); // 추상 메소드 => 다형성을 구현할 메소드

}

 

// Shape 클래스를 상속받아 Point 클래스를 만든다

class Point extends Shape {

@Override

void draw() {

System.out.println("점을 찍는다.");

}

}

// Shape 클래스를 상속받아 Line 클래스를 만든다

class Line extends Shape {

@Override

void draw() {

System.out.println("선을 긋는다");

}

}

// Shape 클래스를 상속받아 Circle 클래스를 만든다

class Circle extends Shape {

@Override

void draw() {

System.out.println("원을 그린다.");

}

}

// Shape 클래스를 상속받아 Rectangle 클래스를 만든다

class Rectangle extends Shape {

@Override

void draw() {

System.out.println("직사각형을 그린다.");

}

}

// Shape 클래스를 상속받아 Triangle 클래스를 만든다

class Triangle extends Shape {

@Override

void draw() {

System.out.println("삼각형을 그린다.");

}

}

 

 

public class PolymorphismTest {

public static void main(String[] args) {

// Shape shape = new Point(); // UpCasting

// shape.draw();

// shape = new Line();

// shape.draw();

// shape = new Circle();

// shape.draw();

// shape = new Rectangle();

// shape.draw();

// shape = new Triangle();

// shape.draw();

 

Shape[] shapes = {new Point(), new Line(), new Circle(), new Rectangle(), new Triangle()};

Scanner scanner = new Scanner(System.in);

System.out.print("원하는 작업을 입력하세요: ");

int menu = scanner.nextInt();

shapes[menu - 1].draw();

}

}

'java&eclipse 코딩 알고리즘 > 20231215' 카테고리의 다른 글

AbstractClassTest  (0) 2023.12.15
PolymorphismTest2  (0) 2023.12.15
UpDownCastingTest  (0) 2023.12.15
CustomerTest  (0) 2023.12.15
VIPCustomer  (0) 2023.12.15