728x90
상속이란?
- 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것입니다.
- 자손은 조상의 모든 멤버를 상속받습니다.
- 자손의 멤버개수는 조상보다 적을 수 없습니다.
포함이란?
- 한 클래스의 멤버변수로 다른 클래스를 선언하는 것입니다.
- 작은 단위의 클래스를 먼저 만들고, 이들을 조합하여 하나의 커다란 클래스를 만들었습니다.
class Car{
Engine e = new Engine(); // 엔진
Door[] d = new Door[4];
}
클래스간의 관계결정하기
- 원은 도형이다(Circle is a Shape) : 상속관계
- 원은 점을 가지고 있다(Circle has a point) : 포함관계
class Shape{
String color = "blue";
void draq(){};
}
class Point{
int x;
int y;
point(){
this(0,0);
}
point(int x, int y){
this.x = x;
this.y = y;
}
}
class Circle extends shape{
Point center;
int r;
Circle(){
this(new Point(0,0),100);
}
Circle(Point Center, int r){
this.center = Center;
this.r = r;
}
}
오버라이딩이란?
- 상속받은 메서드의 내용을 변경하는 것입니다.
- 이름, 매개변수, 리턴타입이 동일해야 합니다. (조건)
- 자손에서 접근제어자를 조상보다 좁은 범위로 갈 수 없습니다.
- 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없습니다.
class Parents{
void parentsMethod() throws IOException, SQLException{
}
}
class Child1 extends Parents{
void child1Method() throws IOException{
}
}
오버로딩 vs 오버라이딩
class Parent{
void parentMethod(){}
}
class Child extends Parent{
void parentMethod(){} // 오버라이딩
void parentMethod(int i){} // 오버로딩
void childMethod(){}
void childMethod(int i){} // 오버로딩
void childMethod(){} // err 중복정의
}
접근제어자
- 접근제어자를 사용하여 변수나 메서드의 사용 권한을 결정할 수 있습니다.
- (a) private (b) default (c) protected (d) public
(a) private
- 해당 클래스안에서만 접근이 가능합니다.
public class Sample{
private String secret;
private String getSecret(){
return this.secret;
}
}
(b) default
- 동일한 패키지안에서만 접근이 가능합니다.
package house;
public class HouseKim{
String lastName = "Kim";
}
package house;
public class HousePark{
public static void main(String[] args){
HouseKim hk = new HouseKim();
System.out.println(hk.lastName()); // Kim
}
}
(c) protected
- 동일 패키지 클래스 또는 해당 클래스의 상속받은 클래스의 접근이 가능합니다.
package house
public class HouseKim{
protected String lastName = "Kim";
}
package house.person;
import house.HouseKim;
public class DanielKim extends HouseKim{
public static void main(String[] args){
DanielKim dk = new DanielKim();
System.out.println(dk.lastName); // Kim
}
}
(d) public
- 어떤 클래스에서든 접근이 가능하다.
package house
public class HousePark{
protected String lastName = "Park";
public String info = "this is public msg";
}
import house.HousePark;
public class Sample{
public static void main(String[] args){
HousePark hp = new HousePark();
System.out.println(hp.info); // this is public msg
}
}
'KOSTA : 클라우드 네이티브 애플리케이션 개발 전문가 양성과정' 카테고리의 다른 글
05/07 18일차 객체지향언어II : 예외처리 (0) | 2024.05.07 |
---|---|
05/07 18일차 객체지향언어II : super(), package와 import (0) | 2024.05.07 |
05/02 16일차 객체지향언어I : 생성자, 변수의 초기화 (0) | 2024.05.02 |
04/30 15일차 객체지향언어I : 변수와 메서드 (0) | 2024.04.30 |
04/29 14일차 배열 (0) | 2024.04.29 |