gwooden_코린이

java_객체지향 추상_221129(7일차) 본문

java/7일차

java_객체지향 추상_221129(7일차)

gwooden22 2022. 11. 29. 12:05
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
Comments