gwooden_코린이
java_객체지향 추상_221129(7일차) 본문
728x90
-추상 클래스 (메서드)
강제성을 주기 위해서 쓰인다.
public void aaa();
부모 클래스 -> 자식 클래스
(상속받은 기능을 무조건 다 쓸필요는 없다.)
(단, 추상 클래스로 만들 경우 그 기능들을 무조건 다 사용해야 된다.)
public void aaa() {
기능구현
}



package 추상클래스;
public class ShapeEx {
public static void main(String[] args) {
Shape[] shapes = new Shape[2];
shapes[0] = new Circle(10);
shapes[1] = new Rectangle(5, 5);
//향상된 for문
for(Shape s : shapes) {
System.out.println(s);
System.out.println("넓이 : " + s.area() + " 둘레 : " + s.length());
}
}
}
Shape [type=원r=10] 넓이 : 314.1592653589793 둘레 : 62.83185307179586 Shape [type=사각형, width=5, height=5] 넓이 : 25.0둘레 : 20.0 |
package 추상클래스;
public class Rectangle extends Shape {
int width, height;
public Rectangle(int width, int height) {
super("사각형");
this.width = width;
this.height = height;
}
//상속 받은 추상 메서드 생성
@Override
double area() {
return width * height;
}
@Override
double length() {
return 2 * (width + height);
}
@Override
public String toString() {
return "Shape [type=" + type + ", width=" + width + ", height=" + height + "]";
}
}
package 추상클래스;
public class Circle extends Shape {
int r;
public Circle(int r) {
super("원");
this.r = r;
}
//부모클래스에 있는 기능들을 다 불러온다.
//자동화 작업으로 코드식 넣기
//오버라이딩 된 메서드
@Override
double area() {
//구현할 내용
return r * r * Math.PI; //Math 클래스 내부에 들어있는걸 간편하게 불러옴
}
@Override
double length() {
//구현할 내용
return 2 * r * Math.PI;
}
@Override
public String toString() {
return "Shape [type=" + type + "r=" + r + "]";
}
}
package 추상클래스;
public abstract class Shape {
String type;
public Shape(String type) {
this.type = type;
}
abstract double area();
/**
* 위 코드가 원래는 이런 느낌에 코드식
* 하지만 추상화 작업이다 보니 아래 처럼 코드식을 작성하면 안됨
double area() {
System.out.println("aaa");
}
**/
abstract double length();
}
728x90
'java > 7일차' 카테고리의 다른 글
java_상속+오버라이딩_221129(7일차) (0) | 2022.11.29 |
---|---|
java_final_221129(7일차) (0) | 2022.11.29 |
java_tv만들기_221129(7일차) (0) | 2022.11.29 |
java_다형성03_221129(7일차) (0) | 2022.11.29 |
java_다형성02_221129(7일차) (0) | 2022.11.29 |