반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- html
- KNeighborsClassifier
- paragraph
- pycharm
- inorder
- 데이터전문기관
- CES 2O21 참가
- 재귀함수
- 머신러닝
- mglearn
- web 개발
- 결합전문기관
- classification
- vscode
- 웹 용어
- tensorflow
- java역사
- cudnn
- 자료구조
- bccard
- web 용어
- broscoding
- CES 2O21 참여
- web 사진
- discrete_scatter
- 대이터
- web
- C언어
- Keras
- postorder
Archives
- Today
- Total
bro's coding
java.abstract(추상화) 본문
반응형
abstract
abstract class(추상 클래스) : 상속을 위한 class
> 직접 객체화 될 수 없다.(자식 클래스의 생성자에서 super()를 이용한 생성은 가능)
> 여러 구체화된 자식 크래스의 공통적인 멤버를 추상화한 클래스
> abstract class는 계층구조 형성과 자식 클래스에서의 재사용성을 높이기 위한 클래스
> 부모 클래스로서의 역할에 집중
package step3;
abstract class Person {
public Person() {
super();
// TODO Auto-generated constructor stub
System.out.println("Person 객체 생성");
}
}
class Student extends Person {
public Student() {
super();
// TODO Auto-generated constructor stub
System.out.println("Student 객체 생성");
}
}
public class TestAbstract1 {
public static void main(String[] args) {
// 아래는 error, abstract로 선언된 class는 직접 객체화(실재화) 불가
// Person p = new Person();
new Student();
// 위 코드를 통해 abstract class는 직접 객체화 될 수 없지만 상속받은 자식 객체 생성시 우선해서 부모 abstract class의 객체가 생성될수 있다는 것을 알수 있다
}
}
abstract method(추상 메서드) : 자식 클래스에게 메서드 구현을 강제
>구현부를 가질 수 없음
> ex) public abstract void study();
> 오직 선언만 가능
> 상속받은 자식 클래스에서는 abstract class가 되지 않고 직접 객체화 되려면 반드시 abstract method를 구현해야 함
> abstract method가 class내에서 (상속 포함)하나 이상 존재하면 해당 클래스는 abstract로 선언해야 함
package step3;
// abstract method의 특성을 이해하기 위한 예제
abstract class Parent { // abstract method가 1개 이상 존재하면 abstract class로 선언해야만 함
int moeny = 100;
public void eat() {
System.out.println("먹다");
}
// 부모 클래스에서 정의할 수 없는 메서드는 아래와 같이 abstract method로 선언해서 자식 class에게 구현을 강제 함
public abstract void study();
}
class Child extends Parent {
// 부모의 abstract method를 아래처럼 구현(or override)해야 함
// 만약 구현하지 않으면 아래의 child2처럼 abstract class로 선언되어야 함
@Override
public void study() {
// TODO Auto-generated method stub
}
}
abstract class Child2 extends Parent { // abstract class이므로 직접 객체화 될 수 없음(new 생성 불가)
}
public class TestAbstract2 {
public static void main(String[] args) {
Parent p = new Child();
System.out.println(p.moeny);
p.study();
}
}
반응형
'[IT] > java' 카테고리의 다른 글
java.Prepare.Interview (0) | 2021.03.05 |
---|---|
java.Interface (0) | 2021.03.04 |
java.Design pattern.template (0) | 2021.03.04 |
java.Design pattern (0) | 2021.03.04 |
java.final (0) | 2021.03.04 |
java.static(정적) (0) | 2021.03.04 |
java.Polymorphism.ObjectCasting(캐스팅) (0) | 2021.03.02 |
java.Polymorphism.instanceof(객체 타입 비교) (0) | 2021.03.02 |
Comments