언어/Java

24-08-27 월

DH_PARK 2024. 8. 28. 12:11

오늘은 시험 날 !


거의 한달만에 java 복습 , 학원에서 못들었던 특강을 다시 듣고있는 중이다.

현재 메소드 오버라이딩에 대해서 보는중..


부모 와 자식 class 간 누가 더 큰 범위냐?

자식일 것 같지만 부모임. 부모가 모든 자식 class를 수용하고 있기 때문에.

오버라이딩 없으면 그냥 부모함수 사용

오버라이딩 되어있으면 자식class에서 설정한 내용이 입력되어

출력을 할 때 자식 class에서 덮어쓴 내용만 출력된다.

컴파일 시점 = 여기가 일단 먼저 , 기계어로 변환하는 과정 , 정적 바인딩

런타임 시점 = 프로그램 실제로 실행 시점 , 동적 바인딩

Nocasting : 객체 생성 시 자기 자신 참조

Upcasting : 하위 클래스의 객체를 상위 클래스 타입으로 변환 하는 것.

Downcasting : 상위 클래스 타입으로 캐스팅된 객체를 다시 원래의 하위 클래스 타입으로 변환하는 것.

상속받은 class에서 함수를 overriding을 해서 사용하려고 할 때 내용을 새로 덮어쓰는게 아닌, 기존 내용위에 내용을 추가해서 덮어쓰고 싶다면 super() 예약어를 사용해서 기존함수를 상속받아야한다.

예를 들어 ,

class Employee {
	String name;
	int age;
	String adress;

	public Employee(String name, int age, String adress) {
		this.name = name;
		this.age = age;
		this.adress = adress;
	}

	void showInfo() {
		System.out.println("이름 : " + this.name);
		System.out.println("나이 : " + this.age);
		System.out.println("주소 : " + this.adress);
	}

이런 사장 클래스를 선언한후에 직원 클래스를 하나 만든다.

class Regular extends Employee {
	float yearMoney;

	public Regular(String name,int age,String adress,float yearMoney) {
		super(name,age,adress);
		this.yearMoney = yearMoney;
	}
	
	---------------------------------
	@Override
	void showInfo() {
		super.showInfo();
		System.out.println("연봉 : "+this.yearMoney);
	}
}   //이 부분에서 super()으로 위에 부모의 showInfo 함수를 상속받지 않으면
//내가 입력한 연봉의 결과만 출력이 되고 이름,나이,주소는 나오지 않는다.

이 부분에서 @Override 라는 부분은 “언옵테인” 이라고 해서 오버라이딩을 한다는것을 명시적으로 표시하는데 사용되는 목적이다. 이걸 사용함으로써 코드의 가독성을 높이고 오버라이딩을 한다는 의도를 명확히 표시할 수 있게 한다.

일단 상속을 받기 위해서는 super를 무조건 사용해야한다.

(알아보니 무조건은 아닌데 웬만해서는 그냥 super를 사용하는게 낫다 !)

class는 단일 상속

abstract :추상 클래스

추상 메서드도 생성 가능

interface 는 다중 상속 가능

중요개념 : upcasting , downcasting

implements : ?

'언어 > Java' 카테고리의 다른 글

생성자란?  (0) 2024.09.23
Java 의 기본 . Class  (0) 2024.09.23
getter 와 setter 란?  (0) 2024.09.23
객체 지향프로그래밍이란?  (0) 2024.09.19
메소드 오버로딩(Overloading) , 오버라이딩(Overriding)  (0) 2024.09.19