본문 바로가기
프로그래밍/Java

[Java] abstract class basic

by 수붕이 2021. 1. 10.
728x90
반응형

 

🔔  개념

추상 클래스(abstract class)는 클래스의 공통된 부분을 뽑아서

 

별도의 클래스(추상 클래스)로 만들어 놓고, 이것을 상속해서 사용합니다.

 


🔔  특징

  • 멤버 변수를 가집니다.
  • abstract 클래스를 상속하기 위해서는 extends(상속)을 이용해야 합니다.
  • abstract 메서드를 가지며, 상속한 클래스에서 반드시 구현해야 합니다.
  • 일반 메서드도 가질 수 있습니다.
  • 일반 클래스와 마찬가지로 생성자도 가질 수 있습니다.

🔔  EX

abstract 클래스를 하나 만들어 줍니다.

 

 

코드를 보면 아시다시피 일반 클래스와 똑같이

 

멤버 변수와 매개변수가 포함된 생성자와 메서드를 만들수 있습니다.

 

그리고 인터페이스를 만들 때와 같이 abstract 메서드도 만들 수 있지만

 

선언만 할수있고 정의는 하지 못합니다.

 

 

정의는 abstract 클래스를 상속받은 ClassEX 클래스에서 정의를 해줄 수 있고

 

이는 필수 불가결한 요소입니다.

 

 

메인 메서드를 만들어서 구현을 해보면 New ClassEx로 객체를 생성해주고

 

매개변수 int타입 100과 String타입 "Java"를 던져줍니다.

 

ClassEx(int i, String s)에서 이걸 받았는데 super키워드로 상위 클래스 올리고 있습니다.

 

그렇기에 i와 s의 값이 AbstractClass(int i, String s)로 들어와

 

ints와 str값이 초기화가 됩니다.

 

AbstractClass 타입에 ac라는 레퍼런스를 만들고

 

ac는 상속을 받았기 때문에 omg1과 omg2를 둘 다 호출해올 수 있습니다.

 


🔔  실습

Bank 시스템 만들기

 

 

먼저 추상 클래스 Bank를 만들어줍니다.

 

 

코드를 보시면 일반 클래스와 동일하게

 

멤버 변수와 생성자, 일반 메서드를 가질 수 있고 추상 메서드도 가질 수 있습니다.

 

예금과 출금 메서드는 Bank클래스 안에 정의되어있고

 

적금과 해지는 추상 메서드로써 다시 구현할 수 있게 해 줍니다.

 

 

MyBank라는 클래스를 하나 만들고 이 클래스는 Bank를 상속받고 있습니다.

 

Bank는 추상 클래스이기 때문에 추상 메서드를 다 구현해줘야 합니다.

 

 

MainClass를 통해 MyBank라는 객체를 생성해주었고 매개변수를 던져줍니다.

 

그래서 MyBank메서드가 이걸 받았는데 super키워드로 상위 클래스로 올려버립니다.

 

그렇기에 Bank 메서드로 다시 올라가 name, account, totalAmount이 초기화되고

 

예금 출금 적금 해지 각각 다 호출해주면 각각 정의돼있는 대로 호출됩니다.

 

마지막으로 getInfo메서드를 호출해 정보를 출력해줍니다.

 

공통된 부분을 추상적으로 만들어놓고

 

추상 클래스를 상속받는 클래스에서 알아서 구현하게 만들어준다.

 

즉 다형성을 만들 수가 있습니다.

 

실행하면 생성자 호출되고 메서드 호출된 걸 확인하실 수 있습니다.

 


 

반응형

'프로그래밍 > Java' 카테고리의 다른 글

[Java] Interface basic  (0) 2021.01.10

댓글