Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 29 30 31
Archives
Today
Total
관리 메뉴

공부 일지

kh 정보교육원 15일차 본문

국비지원/JAVA

kh 정보교육원 15일차

모로노이 2024. 5. 29. 23:11

상속 

객체 지향의 상속

부모 클래스에 만들어진 필드 메소드를 자식 클래스가 물려받음

상속을 통해 간결한 자식 클래스 작성

 

부모에게 물려받은것 외 추가가능

 

장점

클래스의 간결화 관리용이 소프트웨어의 생산성 향상

 

부모클래스 -> 슈퍼 클래스로 부른다

자식클래스 -> 서브 클래스로 부른다

코드 사용 예시 Sub extends Super

슈퍼 클래스를 확장한다는 개념

public class Student extends Person { // Person을 상속받는 클래스 Student 선언
}
public class StudentWorker extends Student { // Studnt 를 상속받는 StudentWorker 선언
}

 

서브 클래스 /부모 클래스의 생성자 호출 및 실행

 

new에 의해 서브 클래스의 객체가 생성될 때

슈퍼 클래스 생성자와 서브 클래스 생성자 모두 실행됨

호출 순서 : 서브 클래스 > 슈퍼 클래스

실행 순서 : 슈퍼 클래스 > 서브 클래스

 

서브 클래스 생성자 작성 원칙

서브 클래스 생성자에서 슈퍼클래스 생성자 하나 선택

서브 크래스에서 슈퍼 클래스의 생성자를 선택하지 않은 경우

컴파일러가 자동으로 슈퍼 클래스의 기본 생성자 선택

서브 클래스에서 슈퍼 클래스의 생성자를 선택하는법

super()

 

오류를 피하기 위해 매개변수 생성자를 생각해서  기본생성자는 만들어 두는게 좋다 

 

메소드 오버라이딩

슈퍼클래스의 메소드를 재정의

메소드의 이름, 매개변소 타입및 개수, 리턴타입 등 모든것 동일하게 작성

 

동적 바인딩 발생

서브 클래스에 오버라이딩된 메소드가 무조건 실행되는 동적 바인딩

 

getter, setter

setter 메소드는 

 

업캐스팅

서브 클래스의 객체는 슈퍼클래스의 멤버를 모두 가지고 있음 그래서 슈퍼클래스의 객체로 취급할 수 있음

'사람은 생물이다'의 논리

서브클래스 객체는 슈퍼클래스 타입으로 타입변환

class Person{ ... }
class Student extends Person { ... }

Student s = new Student();
Person p = s; // 업캐스팅,자동타입변환

객체 내에 슈퍼클래스의 멤버만 접근 가능

class Person{
	String name;
    String id;
    
    public Person(String name){
    	this.name = name;
       }
  }
      
class Student extends Person {
	String grade;
    String department;
    
    public Student(String name) {
    super(name);
    }
}

public class UpcastingEx {
	public static void main(String[] args) {
    	Person p;
        Student s = new Student("홍길동");
        p = s; // 업캐스팅
        
        system.out.println(p.name); // 오류 없음
        
        p.grade = "A"; // 컴파일 오류
        p.edpartment = "Com"; // 컴파일 오류
      }
 }

 

레퍼런스 p를 이용하면 Student 객체의 멤버중 Person의 멤버만 접근 가능하다.

레퍼런스 s를 이용하면 위의 6개 멤버에 모두 접근 가능화다.

'국비지원 > JAVA' 카테고리의 다른 글

필드 (field) 개념 정리  (0) 2024.06.22
OOP 클래스와 객체 정리  (0) 2024.06.21
kh 정보 교육원 13,14일차  (0) 2024.05.28
kh정보 교육원 11, 12 일차  (0) 2024.05.25
kh 정보 교육원 9,10 일차  (0) 2024.05.22