JAVA2 BASIC1

으누·2024년 8월 31일
0

상속(Inheritance)

2G 문자, 전화
3G 문자, 전화, 인터넷
4G 문자, 전화, 인터넷, 영상통화
5G 문자, 전화, 인터넷, 영상통화, AI

1. 기존에 선언된 클래스의 필드를 새로만든 클래스의 필드로
사용하고자 할 때

2. 여러 클래스 선언 시 필드가 겹칠때 부모 클래스를 먼저 선언하고
공통 필드를 묶어서 자식 클래스에게 상속해준다(추상화)

상속 문법

class A{
	A필드
}

class B extends A{
	B필드
}

A : 부모 클래스, 상위 클래스, 슈퍼 클래스, 기반 클래스
B : 자식 클래스, 하위 클래스, 서브 클래스, 파생 클래스

super() : 부모 생성자

자식 클래스 타입의 객체로 부모 필드에 접근할 수 있다.
하지만 자식 생성자만 호출하기 때문에 자식 필드만 메모리에
할당된다고 생각할 수 있다. 
사실 자식 생성자에는 항상 부모 생성자를 호출하기 때문에 
자식 생성자 호출 시 부모와 자식 필드 모두 메모리에 할당된다
이때 부모 생성자를 호출하는 방법은 super()를 사용하는 것이다.
만약 super()를 작성하지 않더라도 컴파일러가 자동으로 작성해준다.

다형성

1. 오버로딩(OverLoading)
	매개변수의 개수 또는 타입이 다르면 동일한 이름의
	메소드로 선언할 수 있다.

2. 오버라이딩(Overriding)
	부모 필드에 선언한 메소드를 자식 필드에서 수정하고자
	할 때 재정의 해야한다.
	이는 자식에서 부모 필드의 메소드와 동일한 이름으로
	선언하는 것이다.
	부모 필드가 메모리에 먼저 할당되고 a라는 메소드가 먼저 올라간다고 하면,
	자식 필드가 메모리에 할당되면서 재정의한 a메소드가 새롭게 만들어지는
	것이 아니라
	기존에 할당된 a메소드 저장공간에 새롭게 재정의한 자식 필드의 소스코드
	주소가 들어가게 된다.
	따라서 자식 객체로 a메소드에 접근하면 자식 필드에서 재정의한 소스코드의
	내용이 읽히게 된다.

Casting(형변환)

up casting : 자식 값을 부모 타입으로 형변환

down casting : up casting된 객체를 자식 타입으로 변환

Casting을 사용하는 이유

모든 자식 값을 전달 받기 위해서는 동일한 타입의 저장공간으로 받아야 한다.
하지만 자식끼리는 서로 타입이 다르기 때문에 한 번에 전달 받을 수가 없다.
이때 up casting을 사용하면, 모든 자식이 부모 타입이므로 하나의 저장공간에
모든 자식을 받을 수 있게 된다.
만약 up casting으로 자식 값을 전달 받았다면, 자식에서 새롭게 구현한 기능들은
사용할 수 없기 때문에 down casting을 통해서 복구하고 사용한다.

객체 간 타입 비교(instanceof)

	a instanceof A : 조건식
	
	- a가 A타입이면 true
	- a가 A타입이 아니면 false

접근 권한 제어자(접근자)

	default 	:다른 패키지에서 접근 불가, 같은 패키지에서만 접근가능,
		생략되어 있다.

	public	:모든 곳에서 접근 가능, 해당 파일의 메인 클래스일 경우만
		사용

	protected:다른 패키지에서 접근 불가, 자식은 가능

	private 	: 다른 클래스에서 접근 불가 , 메소드로만 접근하자

추상 클래스

필드 안에 구현이 안된 메소드가 선언되어 있는 클래스를 추상 클래스라고 한다.
이 때 구현되지 않은 메소드를 추상메소드라고 부른다.
반드시 재정의를 통해 구현을 해야지만 메모리에 할당되기 때문에 
"강제성"을 부여하기 위해서 추상 메소드로 선언한다.

추상 클래스 선언

abstract class 클래스명{
	abstract 리턴타입 메소드명 (매개변수,...);
	일반 메소드도 선언 가능
}
profile
코딩 일기장

0개의 댓글