JAVA-추상 클래스

1 minute read

추상 클래스: 하나 이상의 추상 메소드를 포함하는 클래스

일반 Class + Interface의 특징
추상 클래스를 일반 Class + Interface의 특징을 가지고 있다고 정의하였다.
Format: abstract class “Class-Name”
일반 Class에 Interface의 특징인 Method를 선언만 하고 자식 클래스에서 내용을 꼭 선언하는것이다.
이러한 Interface의 특징을 추상Method로서 구현한다.
Format: abstract returnType “Method-Name”(Argument)
추상클래스에 정의된 추상 Method를 제외한 일반 Method는 Override를 통하여 재정의 하거나 그대로 사용할 수 있는 특징이 있다.
추상 클래스는 바로 객체화 할 수 없다. 추상 Method가 정의되어 있지 않기 때문이다. 따라서 추상 클래스는 자식 클래스에서 추상 Method를 선언한 뒤 객체화 하여 사용하여야 한다.

/*
Parent.java
추상클래스 선언
Format: abstract class Class-Name
추상클래스란 추상 메소드를 포함하는 클래스 이다.
*/
abstract class Parent {
	String name="Kim";
	
	//Interface와 다르게 Method의 내용을 정의할 수 있다.

	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	
	//추상 메소드 이다. 추상메소드는 Interface와 같이 선언만 한다.

	abstract void func();

}

//Child.java

//추상 클래스를 extends한 자식 클래스이다.

//extends이므로 다중 상속 불가

public class Child extends Parent{
	String name = "Hwang";
	
	/*
	추상 클래스의 일반 Method도 Override할 수 있다.
	Override하여 재정의 하거나 그대로 상속받은 대로 사용할 수 있다.
	super: 자식 클래스에서 상속받은 부모 클래스의 멤버 변수를 참조할 때 사용 
	*/
	@Override
	public void setName(String name) {
		super.setName(name);
	}
	
	@Override
	public String getName() {
		super.setName(this.name);
		return super.getName();
	}
	
	//추상 Method는 정의하지 않으면 Error가 발생하게 된다.

	@Override
	void func() {
		System.out.println("추상화 Class 의 추상 Method Override");
	}

}

//Child2.java

public class Child2 extends Parent{
	
	//추상 Method만 정의하고 나머지는 그대로 상속받은 Method를 사용하겠다는 뜻이다.

	@Override
	void func() {
		System.out.println("추상화 Class 의 추상 Method Override");
	}

}

//Abstract.java

public class Abstract {
	
	public static void main(String[] args) {
		/*
		Parent p1 = new Parent(); 
		추상 클래스는 바로 객체화 할 수 없다.
		추상 Method가 정의되어 있지 않기 때문이다.
		따라서 추상 클래스는 자식 클래스에서 추상 Method를 선언한 뒤
		객체화 하여 사용하여야 한다.
		*/
		Child c1 = new Child();
		Child2 c2 = new Child2();
		System.out.println(c1.getName());
		c1.func();
		System.out.println(c2.getName());
		c2.func();
		/*
		Hwang
		추상화 Class 의 추상 Method Override
		Child1은 일반 Method가 Override O => 재정의한 내용 출력
		Kim
		추상화 Class 의 추상 Method Override
		Child1은 일반 Method가 Override X => 부모 Class의 내용 출력
		*/
	}
}

Super - 자식 클래스에서 상속받은 부모 클래스의 멤버 변수를 참조할 때 사용


원본코드: 원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment