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 }
줄번호
- 추상 클래스 Vehicle 생성
- 추상 클래스(Abstract class)
: 클래스들의 공통되는 필드와 메소드를 정의한 구체적이지 않은 클래스 (미완성 설계도)
- 추상 클래스에는 메소드의 시그니처만 정의해 놓고 그 메소드의 실제 동작 방법은 추상 클래스를 상속받는 실체 클래스의 책임으로 위임함
- 선언 방법 : abstract class 클래스명 { ... }
- 특징
1) 추상 클래스 객체는 생성 X
2) 추상 클래스와 실체 클래스는 상속 관계(extends)를 가짐
- abstract public String getName(String val);
: 추상 메소드 getName 생성 -> 매개변수 : 문자열 val
- public String getName()
- 오버로딩(Overloading)
: 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답 (추상 메소드 getName과 함수 getName 은 이름은 같지만 매개변수가 다르므로 서로 다른 응답을 함.)
- name = super.name = val;
: 인자로 받은 문자열을 부모(상위) 클래스의 변수 name 에 대입 후 본인 클래스의 변수 name 에 대입
public String getName(String val) {
: 함수 getName 생성 ▶ 매개변수 : 문자열 val▶ 반환값 : String
- public String getName(byte val[]) {
: 함수 getName 생성 ▶ 매개변수 : 정수형배열 val
- 오버로딩(Overloading)
: 같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답.
(즉 추상 메소드를 실체화한 함수 getName 과 함수 getName 은 이름은 같지만 매개변수가 다르므로 서로 다른 응답을 함.)
※ 추상 클래스와 상속 관계일 경우
추상 클래스 내 선언된 추상 메소드를 반드시 선언해야 함.
- Vehicle obj = new Car("Spark");
: 클래스 Car의 객체 obj 를 생성하고 자료형은 추상 클래스로 지정 ▶ 인자 : 문자열 Spark
- System.out.print(obj.getName());
: 객체 obj 의 함수 getName() 호출 후 반환 값을 출력
->함수 getName() 의 매개변수 : 없음
※ 오버로딩(Overloading) 의 결과로 매개변수가 없는 함수 getName()을 호출한다.
만약! 클래스 Car 에 함수 getName()이 있다면, 우선순위는 하위(자식) 클래스이므로, 클래스 Car 의 함수 getName() 이 호출됨.
출처
https://blog.naver.com/PostView.nhn?blogId=gisafirst&logNo=222291179379
Author And Source
이 문제에 관하여(JAVA : 추상 클래스 (Abstract Class)- 2020년 3회 실기 15번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@csy9604/JAVA-추상-클래스-Abstract-Class-2020년-3회-실기-15번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)