///////
Search
📙

권소연

상속 Inheritance

중복되는 코드를 줄일 수 있다.
클래스의 필드와 메소드를 재사용할 수 있다.
상속과 생성자
예제
class TV { private int size; public TV(int size) { this.size = size; } protected int getSize() { return size; } } class ColorTV extends TV { private int color; public ColorTV(int size, int color) { super(size); this.color = color; } public void printProperty() { System.out.println(super.getSize() + "인치 " + color + "컬러"); } } class IPTV extends ColorTV{ private String address; public IPTV(String address, int size, int color) { super(size, color); this.address = address; } public void printProperty() { System.out.print("나의 IPTV는 "+address+" 주소의 "); super.printProperty(); } } public class practice { public static void main(String[] args) { ColorTV myTV = new ColorTV(32, 1024); myTV.printProperty(); IPTV iptv = new IPTV("192.1.1.2", 32, 2048); iptv.printProperty(); } }
Java
복사

메소드 오버라이딩 Method overriding

오버라이딩

함수 이름은 같지만 동작이 다르다 ( 똑같은 함수이름, 똑같은 인자 )
반드시 상속관계에서 부모의 함수를 덮어쓰는 것
함수 안의 바디만 다르게 하여야함
@Override 어노테이션 이용
예제
class Shape{ public void draw() { System.out.println("도형을 그립니다."); } } class Rectangle extends Shape{ @Override //오버라이드: 함수 안의 바디만 다르게 public void draw() { System.out.println("사각형을 그립니다."); } } public class ShapeTest { public static void main(String[] args) { //1번 Shape shape = new Shape(); shape.draw(); Rectangle rectangle = new Rectangle(); rectangle.draw(); //자기 자신이 호출됨. "사각형을 그립니다." } }
Java
복사
미니 프로젝트 (월급 예제)

오버로딩

같은 함수 이름으로 파라미터의 데이터타입 또는 갯수를 달리할 수 있다.( 파라미터 다름 )
예제
class Circle{ private double r; public double getArea() { return Math.PI * r * r; } public double getArea(double radius) { return Math.PI * radius * radius; } public double getArea(int radius, int n) { return Math.PI * radius * radius; } public double getArea(Circle c) { return Math.PI; } public double getArea(Circle[] c){ return Math.PI; }
Java
복사

다형성 polymorphism

객체지향언어에서 중요
객체의 타입이 다르면 같은 메시지가 전달되어도 다른 동작
1.
부모 = 지식
2.
오버라이딩은 자식의 것( 기본적으로 )
class Shape{ public Shape() { System.out.println("도형입니다."); } public void draw() { System.out.println("도형을 그립니다."); } } class Rectangle extends Shape{ public Rectangle() { System.out.println("사각형 생성자"); } @Override //오버라이드: 함수 안의 바디만 다르게 public void draw() { System.out.println("사각형 도형을 그립니다."); } } class Triangle extends Shape{ public Triangle() { System.out.println("삼각형 생성자"); } @Override public void draw() { System.out.println("삼각형 도형을 그립니다."); } } public class ShapeTest { public static void main(String[] args) { // 부모 = 자식 Shape shape2 = new Rectangle(); shape2.draw(); shape2 = new Triangle(); shape2.draw(); } }
Java
복사
//자식 = 부모 는 불가능 Rectangle rect = new Shape(); //에러:
Java
복사