뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

기초 #10. 추상 클래스 Shape (추상클래스 예제편)
언어/Java

기초 #10. 추상 클래스 Shape (추상클래스 예제편)

2020. 9. 1. 16:32
반응형

▶추상클래스에는 추상메서드와 일반 메서드 둘다 정의될 수 있고,

▶추상메서드를 정의할 때는 블록 구현이 없는 것이 특징이다.

 

1. 추상 클래스 Shape 코드와 상속받는 두 클래스 Rect, Tri

public abstract class Shape {
	double area;	//만약 final static double area;로 선언한다면 하위클래스에서 사용하지 못함.
    
    public abstract void draw(double w, double h);	//블록{}이 구현되지않은 추상메서드! 무조건 재정의.
    final static void function() {
    	System.out.println("추상 클래스의 정적 메서드입니다. 재정의 못해요.");
    }
}

class Rect extends Shape {
	public void draw(double w, double h) {
    	System.out.println("직사각형 점 4개 연결");
        area = w*h;
        System.out.println("넓이: " + area);
    }
}

class Tri extends Shape {
	public void draw(double w, double h) {
    	System.out.println("삼각형 점 3개 연결");
        area=(w*h)/2;
        System.out.println("넓이: " + area);
    }
}

▶강제로 재정의하도록 하는 것이 abstract 키워드라면

▶강제로 재정의를 못하도록 하는 것은 final static 키워드이다.

 

 

2. 실행 코드인 Board 클래스

public class Board {
	public static void main(String[] args) {
    	new Rect().draw(10,50);	//Rect r = new Rect(); r.draw(10,50); 와 같은 구문.	
        new Tri().draw(30,5.6);	//즉, 변수 설정 없이 바로 접근해준 것. 
        //new Rect()를 하나의 객체로 볼 수 있고, 그 객체의 draw()를 호출한 것.
        
        Shape.function();	//static 메서드는 클래스를 통해서 접근 가능하다. new Rect().function(); (x)
    }
}

결과는 다음과 같다.

반응형
저작자표시 (새창열림)

'언어 > Java' 카테고리의 다른 글

예외 처리 (이론)  (0) 2020.09.07
기초 #11. 중첩 인터페이스와 익명 객체 (+예제 1,2)  (0) 2020.09.06
기초 #9. 인터페이스 Soldier (인터페이스 예제편)  (0) 2020.09.01
기초 #8. 인터페이스 (+익명 구현 객체)  (0) 2020.08.31
기초 #7. 중첩 클래스(인스턴스 멤버 클래스, 정적 멤버 클래스, 로컬 클래스)  (0) 2020.08.30
    '언어/Java' 카테고리의 다른 글
    • 예외 처리 (이론)
    • 기초 #11. 중첩 인터페이스와 익명 객체 (+예제 1,2)
    • 기초 #9. 인터페이스 Soldier (인터페이스 예제편)
    • 기초 #8. 인터페이스 (+익명 구현 객체)
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바