-
[JAVA]java 상속의 개념/상속과 접근 제어/super/묵시적 형 변환Languages/Java 2021. 2. 23. 16:10반응형
상속
# 상속의 개념
- 상속(inheritance)은 기존의 존재하는 클래스로부터 코드와 데이터를 이어받고 자신이 필요한 기능을
추가하는 기법이다
# 상속하는 클래스/상속받는 클래스
- 상속하는 클래스 parent,base,super class 상위클래스
- 상속받는 클래스 child,derived,sub class 하위클래스# 클래스 상속 문법
class B extends A {
}
ex) 포유류 >>> 사람
class Human extends Mammal{
}▶ 이때!!!
→ 코드를 재사용하는 법은 상속과 합성이 있다.
ex) point 와 circle 클래스가 있다고 하자.
point
package inheitance; public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }
circle
package inheitance; public class Circle { Point point; private int redius;//이것은 합성관계!!! has - a관계 public Circle() { Point point = new Point(); } }
//이럴 때 상속관계가 형성된다.
상속을 활용한 고객관리 프로그램
고객의 정보를 활용하여 고객 맞춤 서비스를 구현
고객의 등급에 따라 차별화 된 할인율고 포인트를 지급
등급에 따른 클래스를 따로 구현하는 것이 아닌 일반적인 클래스를
먼저 구현하고 그 보다 기능이 많은 클래스는 상속을 활용하여 구현# 상속과 접근제어
- 접근 제어자 가시성
외부 클래스하위 클래스 동일 패키지 내부 클래스 public
oo o o protected
xo o o default(선언 x)
xx o o private
xx x o 쉬운 설명)
가시성이 제일 작은것은
private
패키지안에서만 볼수 있는 것은
default
상하위 클래스만 볼 수 있는 것은
protected
다 볼수 있는 것은
publicsuper();
상위클래스를 가리키는 키워드
하위 클래스가 상위 클래스에대한 주고를 가지게 된다
this 는 자기자신의 메모리를 가리키는 키워드
생성자를 만들때 사용한다예제)
직원클래스의 매니져클래스를 만들어 보너스를 추가 한다고 한다
employee
package inheitance; public class Employee { public String name; String address; protected int salary; private int rrn; public Employee(String name, String address, int salary,int rrn) { this.name = name; this.address = address; this.salary = salary; this.rrn = rrn; } public String toString(){ return "Employee [name = "+ name +", address ="+ address + ", salary = "+ salary +",rrn= "+ rrn +"]"; } }
manager
package inheitance; public class Manager extends Employee { private int bonus; public Manager(String name,String address, int salary, int rrn,int bonus) { super(name,address,salary,rrn); this.bonus = bonus; } void test() { System.out.println("name = " + name); System.out.println("address = " + address); System.out.println("salary = " + salary); //System.out.println("rrn = " + rrn); 하위클래에서 상위클래스 private 생성자는 구현불가능 } }
manaherTest
package inheitance; public class ManagerTest{ public static void main(String[] args) { Manager m = new Manager("tom","seoul",100000,123456,50000); System.out.println(m); m.test(); } }
결과값
+덧붙이는 설명)
여기 코딩에서 보아야 할 부분은?
어느 클래스가 상위클래스인지 하위클래스인지
private생성자를 사용하면 다른 클래스에서 사용가능한지
extands 생성자를 어떻게 사용하였는지
super()생성자가 어떻게 사용되었는지 (상위클래스의 매게변수를 어떻게 이용하였는지)
상위 클래스로의 묵시적 형 변환
상위클래스 형으로 변수를 선언 하고 하위 클래스 인스턴스를 생성할수 있음
하위클래스는 상위클래스의 타입을 내포하고 있으므로 상위클래스로 묵시적 형변환이 가능 함
상속받은 클래스는 상위클래스의 타입을 내부에 내포하고 있다
Customer vc = new VipCustomer(); //어퀘스팅반응형'Languages > Java' 카테고리의 다른 글
[JAVA]java 추상 클래스/템플렛 매서드 (1) 2021.03.01 [JAVA]java 오버로딩(overloading)과 java 오버라이딩(overriding)/java 다형성/java 다운캐스팅(downcasting) (0) 2021.02.28 [JAVA]객체 배열, 배열 복사, 다차원 배열, arraylist (0) 2021.02.22 [JAVA]java 배열 (0) 2021.02.22 [JAVA] static 변수 (0) 2021.02.18