Farm System 4주차(10.05)

swlab025·어제

상속

부모 클래스에 만들어진 필드(변수)와 메소드(함수)를 자식 클래스가 물려 받는 것 -> 자식 클래스는 부모클래스와 동일한 필드 및 메소드를 만들 필요 x

중복되는 메소드를 상속시키면 부모 클래스를 수정하는 것으로
자식 클래스 전부의 해당 메소드를 수정할 수 있다.

public class Person{ // 부모 클래스
}

public class Student extends Person{ // Person에서 상속받음
}

public class StudentWorker extends Student{
}// 부모 클래스, 학생 클래스 상속

서브 클래스 객체 생성

Point p = new Point();
ColorPoint cp = new ColorPoint(); // 서브 클래스 객체 생성
// 서브 클래스 객체는 슈퍼 클래스 멤버와 서브 클래스 멤버 모두 갖음.

자바에서는 클래스의 다중상속 x
상속 횟수 제한 x
최상위 클래스는 object

접근 지정자

private : 현재 클래스만 접근 가능
디폴트 : 같은 패키지만 접근가능
protected : 서브클래스와 같은 패키지 클래스만 접근 가능
public 모두 접근 가능

서브 클래스 객체 생성시 : 서브 클래스와 슈퍼클래스의 생성자 모두 실행
순서는 슈퍼클래스 먼저 실행

super()를 통해 명시적으로 슈퍼 클래스 생성자 선택하며

이용하지 않으면 슈퍼 클래스 기본 생성자(인수 x)가 자동 선택됨.

업캐스팅

서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환
업캐스팅된 레퍼런스는 슈퍼 클래스의 멤버에만 접근 가능

Person p = new Student("이재문");

다운 캐스팅

업캐스팅의 반대

Student s = (Student)p;

Studenet 객체 전체에 접근 가능 ( Person 클래스 포함 )

레퍼런스 instanceof 클래스명

레퍼런스가 가리키는 객체가 해당 클래스 타입의 객체이면 true/ 아니면 false

메소드 오버라이딩

슈퍼 클래스 메소드 무시 또는 덮어쓰기

class Shape{
	public void draw(){
    	System.out.println("Shape");
        }
      }
      
class Line extends Shape{
	public void draw(){
    	System.out.println("Line");
        }
      }
Line line = new Line();
line.draw();

Shaper shape = new Line();
shape.draw();
//둘다 line클래스안 draw 실행

실습문제
1.
public class ex1 {

class TV {
	private int size;
	public TV(int size) { this.size = size;}
	protected int getSize() {return size;}
}

class ColorTV extends TV{
	public int ColorTV(int size int model){ this.size=size;}
	public void printProperty() {
		System.out.print(getSize());
	}
}
public static void main(String[] args) {
	ColorTV myTv = new ColorTV(65,65536);
	myTv.printProperty();

}

}

추가 예정입니다.

profile
인공지능에 관심있음

0개의 댓글