의견.png

"추상클래스"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
1번째 줄: 1번째 줄:
'''추상 클래스'''<!--추상 클래스-->(abstract class)는 1개 이상의 [[추상메소드]]를 멤버로 가지고 있는 [[클래스]]를 말한다. 추상클래스는 추상메소드를 포함하고 있다는 점을 제외하면 일반 [[클래스]]와 모든 점이 동일하며 생성자와 필드, 메소드도 포함할 수 있다.<ref> TCPSCHOOL, <[http://tcpschool.com/java/java_polymorphism_abstract 추상클래스]>, <<TCPSHOOL>> </ref>   추상클래스 중에서 오직 추상메소드와 상수만을 멤버로 가지고 있는 것을 [[인터페이스]](Interface)라고 한다.
+
'''추상클래스'''<!--추상 클래스-->(abstract class)는 1개 이상의 [[추상메소드]]를 [[멤버]]로 가지고 있는 [[클래스]]를 말한다. 추상클래스는 추상메소드를 포함하고 있다는 점을 제외하면 일반 [[클래스]]와 모든 점이 동일하며 [[생성자]]와 [[필드]], [[메소드]]도 포함할 수 있다.<ref>TCPSCHOOL, <[http://tcpschool.com/java/java_polymorphism_abstract 추상클래스]>, <<TCPSHOOL>> </ref> 추상클래스 중에서 오직 [[추상메소드]]와 [[상수]]만을 멤버로 가지고 있는 것을 [[인터페이스]](Interface)라고 한다.
 
 
  
 
==목적==
 
==목적==
추상 클래스의 목적은 공통적인 기능을 하는 객체들의 추상화로 [[객체]]를 생성하는 것이 아닌 상속을 위한 슈퍼 클래스로 활용하는 것이다.<ref>피누, <[https://velog.io/@litien/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EC%99%80-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4 인터페이스와 추상클래스]>, <<litien.log>>
+
추상클래스의 목적은 공통적인 기능을 하는 객체들의 추상화로 [[객체]]를 생성하는 것이 아닌 상속을 위한 슈퍼 클래스로 활용하는 것이다.<ref>피누, <[https://velog.io/@litien/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EC%99%80-%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4 인터페이스와 추상클래스]>, <<litien.log>>, 2019-11-17</ref> 추상클래스는 추상 메소드를 통해 추상클래스를 상속받는 서브 클래스가 구현할 메소드의 원형을 알려주는 인터페이스의 역할을 하고 서브 클래스의 [[다형성]]을 실현한다.
, 2019-11-17</ref> 추상 클래스는 추상 메소드를 통해 추상 클래스를 상속받는 서브 클래스가 구현할 메소드의 원형을 알려주는 인터페이스의 역할을 하고 서브 클래스의 [[다형성]]을 실현한다.
 
 
 
  
 
==생성 및 구현==
 
==생성 및 구현==
추상메소드를 가진 클래스로써 abstract로 선언하여 생성하고 추상 클래스의 구현은 서브 클래스에서 슈퍼 클래스의 모든 추상 메소드를 [[오버라이딩]]하여 실행 가능한 코드로 구현하는 것이다.<ref>황기태, <[https://www.booksr.co.kr/html/book/book.asp?seq=697057 JAVA ESSENTIAL]>, <<생능출판사>>, 2018-08-10</ref>
+
추상메소드를 가진 클래스로써 abstract로 선언하여 생성하고 추상클래스의 구현은 서브 클래스에서 슈퍼 클래스의 모든 추상 메소드를 [[오버라이딩]]하여 실행 가능한 코드로 구현하는 것이다.<ref>황기태, <[https://www.booksr.co.kr/html/book/book.asp?seq=697057 JAVA ESSENTIAL]>, <<생능출판사>>, 2018-08-10</ref>
 
    
 
    
  //추상 클래스 생성
+
  //추상클래스 생성
 
  abstract class A{
 
  abstract class A{
 
  abstract public int add(int a, int b);
 
  abstract public int add(int a, int b);
 
  }
 
  }
  
  //추상 클래스 구현
+
  //추상클래스 구현
 
  class B extends A{
 
  class B extends A{
 
  @Override
 
  @Override
22번째 줄: 19번째 줄:
 
  }
 
  }
 
  }
 
  }
 
  
 
==특징==
 
==특징==
*객체 생성 불가능
+
* '''객체 생성 불가능''' : 추상클래스는 자체적으로 [[객체]] 생성이 불가능하여 서브 클래스가 상속을 통해 객체를 생성해야 한다.<ref>JOKER, <[https://m.blog.naver.com/PostView.nhn?blogId=heartflow89&logNo=220963055326&proxyReferer=https:%2F%2Fwww.google.com%2F 추상 클래스(abstract class), 추상 메소드)]>, <<JOKER`s ROOM>>, 2017-03-21</ref>
추상 클래스는 자체적으로 객체 생성이 불가능하여 서브 클래스가 상속을 통해 객체를 생성해야 한다.<ref>JOKER, <[https://m.blog.naver.com/PostView.nhn?blogId=heartflow89&logNo=220963055326&proxyReferer=https:%2F%2Fwww.google.com%2F 추상 클래스(abstract class), 추상 메소드)]>, <<JOKER`s ROOM>>, 2017-03-21</ref>
 
 
 
*추상 클래스 상속
 
상속받은 서브 클래스는 반드시 추상 메소드를 구현([[오버라이딩]])해야한다. 만약 하나라도 추상 메소드를 구현하지 않는다면 해당 서브 클래스도 추상 클래스로 지정해야 한다.
 
  
 +
* '''추상클래스 상속''' : [[상속]]받은 서브 클래스는 반드시 추상 메소드를 구현([[오버라이딩]])해야 한다. 만약 하나라도 추상 메소드를 구현하지 않는다면 해당 서브 클래스도 추상클래스로 지정해야 한다.
  
 
{{각주}}
 
{{각주}}
 
  
 
==참고 자료==
 
==참고 자료==
40번째 줄: 32번째 줄:
 
*황기태, <[https://www.booksr.co.kr/html/book/book.asp?seq=697057 JAVA ESSENTIAL]>, <<생능출판사>>, 2018-08-10
 
*황기태, <[https://www.booksr.co.kr/html/book/book.asp?seq=697057 JAVA ESSENTIAL]>, <<생능출판사>>, 2018-08-10
 
*JOKER, <[https://m.blog.naver.com/PostView.nhn?blogId=heartflow89&logNo=220963055326&proxyReferer=https:%2F%2Fwww.google.com%2F 추상 클래스(abstract class), 추상 메소드)]>, <<JOKER`s ROOM>>, 2017-03-21
 
*JOKER, <[https://m.blog.naver.com/PostView.nhn?blogId=heartflow89&logNo=220963055326&proxyReferer=https:%2F%2Fwww.google.com%2F 추상 클래스(abstract class), 추상 메소드)]>, <<JOKER`s ROOM>>, 2017-03-21
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==

2020년 8월 5일 (수) 23:03 판

추상클래스(abstract class)는 1개 이상의 추상메소드멤버로 가지고 있는 클래스를 말한다. 추상클래스는 추상메소드를 포함하고 있다는 점을 제외하면 일반 클래스와 모든 점이 동일하며 생성자필드, 메소드도 포함할 수 있다.[1] 추상클래스 중에서 오직 추상메소드상수만을 멤버로 가지고 있는 것을 인터페이스(Interface)라고 한다.

목적

추상클래스의 목적은 공통적인 기능을 하는 객체들의 추상화로 객체를 생성하는 것이 아닌 상속을 위한 슈퍼 클래스로 활용하는 것이다.[2] 추상클래스는 추상 메소드를 통해 추상클래스를 상속받는 서브 클래스가 구현할 메소드의 원형을 알려주는 인터페이스의 역할을 하고 서브 클래스의 다형성을 실현한다.

생성 및 구현

추상메소드를 가진 클래스로써 abstract로 선언하여 생성하고 추상클래스의 구현은 서브 클래스에서 슈퍼 클래스의 모든 추상 메소드를 오버라이딩하여 실행 가능한 코드로 구현하는 것이다.[3]

//추상클래스 생성
abstract class A{
	abstract public int add(int a, int b);
}
//추상클래스 구현
class B extends A{
	@Override
	public int add(int a, int b){
		return a+b;
	}
}

특징

  • 객체 생성 불가능 : 추상클래스는 자체적으로 객체 생성이 불가능하여 서브 클래스가 상속을 통해 객체를 생성해야 한다.[4]
  • 추상클래스 상속 : 상속받은 서브 클래스는 반드시 추상 메소드를 구현(오버라이딩)해야 한다. 만약 하나라도 추상 메소드를 구현하지 않는다면 해당 서브 클래스도 추상클래스로 지정해야 한다.

각주

  1. TCPSCHOOL, <추상클래스>, <<TCPSHOOL>>
  2. 피누, <인터페이스와 추상클래스>, <<litien.log>>, 2019-11-17
  3. 황기태, <JAVA ESSENTIAL>, <<생능출판사>>, 2018-08-10
  4. JOKER, <추상 클래스(abstract class), 추상 메소드)>, <<JOKER`s ROOM>>, 2017-03-21

참고 자료

같이 보기


  의견.png 이 추상클래스 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.