java 상속(extends), OverLoading vs Overriding

김동명·2022년 11월 28일
0

java

목록 보기
3/3

1. 상속

상속

  • 부모클래스로부터 자식클래스가 코드를 물려받는 기법
  • 상속블받은 자식 클래스는 부모 클래스 속의 멤버를 자유롭게 사용 할 수 있다.

예시

1 .기본 상속 방식

extends를 사용하여 자식클래스에서 부모클래스를 바라보게 한다.

  • 부모클래스 Car
public class Car {

	private String name;
	private String color;
	private int price;

}
  • 자식클래스 SuperCar
public class SuperCar extends Car{

}

2. 부모클래스의 getter, setter, ToString 메서드 이용

  • 부모클래스 Car
public class Car {

	private String name;
	private String color;
	private int price;

	@Override
	public String toString() {
		return "Car [name=" + name + ", color=" + color + ", price=" + price + "]";
	}

	public Car(String name, String color, int price) {
		super();
		this.name = name;
		this.color = color;
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	} 
 }
  • 자식클래스 SuperCar
public class SuperCar extends Car{

}
  • Main 클래스
public class Main {

	public static void main(String[] args) {
    
    			Car car = new Car();
		car.setName("자동차");
		car.setColor("흰색");
		car.setPrice(500);
	
		
		SuperCar superCar = new SuperCar();
		superCar.setName("슈퍼카");
		superCar.setColor("빨간색");
		superCar.setPrice(1000);
		
		System.out.println(car.toString());
		System.out.println(superCar.toString());
    	
    }
}
  • 출력

3. 부모클래스의 다른 메서드의 사용

  • 부모클래스 Car
public class Car {

	private String name;
	private String color;
	private int price;
    
   	public void go() {
		System.out.println("전진");
	}
	 
	public void engineOn() {
		System.out.println("시동 켜기");
	}
	
	public void show() {
		System.out.println("--차량정보--");
		System.out.println("모델 : " + name);
		System.out.println("컬러 : " + color);
		System.out.println("가격 : " + price);
	}
}
  • 자식클래스 SuperCar
public class SuperCar extends Car{

}
  • Main 클래스
public class Main {

	public static void main(String[] args) {
    
    			Car car = new Car();
		car.setName("자동차");
		car.setColor("흰색");
		car.setPrice(500);
	
		
		SuperCar superCar = new SuperCar();
		superCar.setName("슈퍼카");
		superCar.setColor("빨간색");
		superCar.setPrice(1000);
		
		car.go();
		car.engineOn();
		car.show();
        
		System.out.println("-------------------------------");
		
		superCar.go();
		superCar.engineOn();
		superCar.show();
    	
    }
}
  • 출력

2. 오버라이드 ( Override )

오버라이드 ( Override )

  • 부모 클래스에 존재하는 메서드를 자식클래스에서 같은 이름으로 재정의하는 행위
  • @Override 어노테이션을 사용해서 지정 할 수 있으며, 부모클래스의 있는 메서드를 자동완성하면 자동으로 생성된다.

예시

1. 부모클래스 메서드의 기능을 자식클래스 메서드에서 재정의하기

  • 부모클래스 Car
public class Car {

	public void engineOn() {
		System.out.println("시동 켜기");
	}

}
  • 자식클래스 SuperCar
public class SuperCar extends Car{
	
    @Override 
	public void engineOn() {
		System.out.println("버튼시동");
	}

}
  • Main 클래스
public class Main {

	public static void main(String[] args) {
		
		car.engineOn();
        
		System.out.println("-------------------------------");
        
		superCar.engineOn();
    	
    }
}
  • 출력

2. 부모클래스 메서드의 기능을 자식클래스 메서드에서 추가하기

  • 부모클래스 Car
public class Car {

	public void show() {
		System.out.println("--차량정보--");
		System.out.println("모델 : " + name);
		System.out.println("컬러 : " + color);
		System.out.println("가격 : " + price);
	}

}
  • 자식클래스 SuperCar
public class SuperCar extends Car{
	
    private String mode;
    
	public void setMode(String mode) {
		this.mode = mode;
	}
	
	public String getMode() {
		return mode;
	}
	
	@Override
	public void show() {
		super.show();
        // super : 해당 클래스의 부모 클래스를 의미한다. 여기서 super는 car 클래스를 바라본다.
		System.out.println("모드 : " + getMode());
	}

}
  • Main 클래스
public class Main {

	public static void main(String[] args) {
    
    	Car car = new Car();
		car.setName("자동차");
		car.setColor("흰색");
		car.setPrice(500);
	
		
		SuperCar superCar = new SuperCar();
		superCar.setName("슈퍼카");
		superCar.setColor("빨간색");
		superCar.setPrice(1000);
		
		car.show();
        
		System.out.println("-------------------------------");
        
		superCar.setMode("스포츠카");
		superCar.show();
    	
    }
}
  • 출력

3. 오버로드 ( overload )

오버로드 ( overload )

  • 메서드를 같은 이름으로, 매개변수의 갯수나 타입을 다르게 하여 중복정의하는 행위

예시

public class OverlLoadingTest {

	public static void main(String[] args) {
		OverlLoadingTest test = new OverlLoadingTest();
		
		System.out.println(test.add(1, 2));
		System.out.println(test.add(1, 2, 3));
		System.out.println(test.add(1.222, 3.444));
		
	}
	
	public int add(int a, int b) {
		return a + b ;
	}
	
	public int add(int a, int b, int c) {
		return a + b + c;
	}
	
	public double add(double a, double b) {
		return a + b ;
	}
	
	
}
  • 출력
profile
코딩공부

0개의 댓글