JAVA : 추상 클래스 (Abstract Class)- 2020년 3회 실기 15번

1 abstract class Vehicle {
2	String name;
3	abstract public String getName(String val);
4	public String getName() {
5		return "Vehicle name:" + name;
6	}
7 }
8 class Car extends Vehicle {
9	String name;
10	public Car(String val) {
11		name = super.name = val;
12	}
13	public String getName(String val) {
14		return "Car name:" + val;
15	}
16	public String getName(byte val[]) {
17		return "Car name:" + val;
18		}
19 }
20 public class Gisafirst {
21	public static void main(String args[]) {
22		Vehicle obj = new Car("Spark");
23		System.out.print(obj.getName());
24	}
25 }

줄번호

  1. 추상 클래스 Vehicle 생성
  • 추상 클래스(Abstract class)
    : 클래스들의 공통되는 필드와 메소드를 정의한 구체적이지 않은 클래스 (미완성 설계도)
  • 추상 클래스에는 메소드의 시그니처만 정의해 놓고 그 메소드의 실제 동작 방법은 추상 클래스를 상속받는 실체 클래스의 책임으로 위임함
  • 선언 방법 : abstract class 클래스명 { ... }
  • 특징
    1) 추상 클래스 객체는 생성 X
    2) 추상 클래스와 실체 클래스는 상속 관계(extends)를 가짐
  1. abstract public String getName(String val);
    : 추상 메소드 getName 생성 -> 매개변수 : 문자열 val
  1. public String getName()
  • 오버로딩(Overloading)
    : 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답 (추상 메소드 getName과 함수 getName 은 이름은 같지만 매개변수가 다르므로 서로 다른 응답을 함.)
  1. name = super.name = val;
    : 인자로 받은 문자열을 부모(상위) 클래스의 변수 name 에 대입 후 본인 클래스의 변수 name 에 대입

  1. public String getName(String val) {
    : 함수 getName 생성 ▶ 매개변수 : 문자열 val▶ 반환값 : String
  1. public String getName(byte val[]) {
    : 함수 getName 생성 ▶ 매개변수 : 정수형배열 val
  • 오버로딩(Overloading)
    : 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답.
    (즉 추상 메소드를 실체화한 함수 getName 과 함수 getName 은 이름은 같지만 매개변수가 다르므로 서로 다른 응답을 함.)
    ※ 추상 클래스와 상속 관계일 경우
    추상 클래스 내 선언된 추상 메소드를 반드시 선언해야 함.
  1. Vehicle obj = new Car("Spark");
    : 클래스 Car의 객체 obj 를 생성하고 자료형은 추상 클래스로 지정 ▶ 인자 : 문자열 Spark
  1. System.out.print(obj.getName());
    : 객체 obj 의 함수 getName() 호출 후 반환 값을 출력
    ->함수 getName() 의 매개변수 : 없음
    ※ 오버로딩(Overloading) 의 결과로 매개변수가 없는 함수 getName()을 호출한다.
    만약! 클래스 Car 에 함수 getName()이 있다면, 우선순위는 하위(자식) 클래스이므로, 클래스 Car 의 함수 getName() 이 호출됨.

출처
https://blog.naver.com/PostView.nhn?blogId=gisafirst&logNo=222291179379

좋은 웹페이지 즐겨찾기