파일명 : Test3.java
package com.test;
// 다형성 : 동일한 코드로 다른 기능 실행
// 클래스 Shape 도형 // 부모
// 멤버변수 double area // 면적 저장공간
// 메소드 getArea() return area // 면적구해서 리턴하는 메소드
class Shape {
double area;
double getArea() {
return area;
}
}
// 클래스 Circle 원 // 상속 Shape
// 멤버변수 정수형 r=5 // 반지름
// 메소드 오버라이딩. 원면적 구해서 리턴하는 메소드
class Circle extends Shape {
int r=5;
@Override
double getArea() {
area = r * r * 3.14;
return area;
}
}
// 클래스 Rectangle 사각형 // 상속 Shape
// 멤버변수 정수형 w=10 정수형 h=10
// 메소드 오버라이딩. 사각형면적 구해서 리턴하는 메소드
class Rectangle extends Shape {
int w = 10; // width 폭. 가로
int h = 10; // height 높이. 세로
@Override
double getArea() {
area = w * h;
return area;
}
}
//클래스 Triangle 삼각형 // 상속 Shape
// 멤버변수 정수형 w=10 정수형 h=10
// 메소드 오버라이딩. 삼각형면적 구해서 리턴하는 메소드
class Triangle extends Shape {
int w = 10;
int h = 10;
@Override
double getArea() {
area = w * h / 2.0;
return area;
}
}
public class Test3 {
public static void main(String[] args) {
// 원 객체생성. 원의면적 출력 "면적: "
Circle c = new Circle(); // 정적바인딩만 일어남
System.out.println("면적: " + c.getArea());
// 사각형 객체생성. 사각형 면적 출력 "면적: "
Rectangle r = new Rectangle(); // 정적바인딩만 일어남
System.out.println("면적: " + r.getArea());
// 삼각형 객체생성. 삼각형 면적 출력 "면적: "
Triangle t = new Triangle(); // 정적바인딩만 일어남
System.out.println("면적: " + t.getArea());
System.out.println("=============");
// 업캐스팅 다형성
Shape s;
s = new Circle();
System.out.println("면적: " + s.getArea()); // 동적바인딩이 일어남!
s = new Rectangle();
System.out.println("면적: " + s.getArea());
s = new Triangle();
System.out.println("면적: " + s.getArea());
System.out.println("=============");
prnShapeArea(new Circle());
prnShapeArea(new Rectangle());
prnShapeArea(new Triangle());
System.out.println("=============");
Shape[] arrShape = new Shape[3];
arrShape[0] = new Circle();
arrShape[1] = new Rectangle();
arrShape[2] = new Triangle();
for (Shape sh : arrShape) {
System.out.println("면적: " + sh.getArea());
}
} // main()의 끝
// 매개변수 Shape shape = new Circle();
static void prnShapeArea(Shape shape) {
System.out.println("면적: " + shape.getArea());
}
}
'IT > Java' 카테고리의 다른 글
자바 static, 클래스변수, 인스턴스변수 (0) | 2018.07.20 |
---|---|
자바 다형성 예제 (ArrayList) (0) | 2018.07.20 |
자바 다형성, 정적바인딩, 동적바인딩, instanceof (0) | 2018.07.18 |
자바 다형성, 참조형(레퍼런스형) 형변환, 업캐스팅, 다운캐스팅 (0) | 2018.07.18 |
자바 상속, super() 생성자 호출 (0) | 2018.07.17 |