LoGin
article thumbnail
반응형

 

 

자바 프로그래밍에서 상속과 오버로딩은 객체지향 프로그래밍의 핵심 개념 중 하나로, 코드의 재사용성과 유연성을 높이는 데 중요한 역할을 합니다. 상속은 is-a 관계를 표현하며, 기존 클래스의 특성과 기능을 새로운 클래스에게 물려줌으로써 코드의 중복을 최소화하고 확장성을 높입니다.

 

예를 들어, 동물 클래스가 있다면 이를 상속받는 사자, 닭, 돌고래 클래스는 동물의 공통된 특성과 기능을 재사용할 수 있습니다. 이렇게 상속을 통해 클래스를 작성하면, 코드를 처음부터 새롭게 작성할 필요 없이 기존 클래스의 일부를 재활용하여 새로운 클래스를 정의할 수 있습니다.

 

 

또한, 오버로딩은 같은 이름의 메서드나 생성자를 여러 개 정의하여 매개변수나 타입을 다르게 함으로써 다양한 입력에 대응할 수 있습니다. 이를 통해 한 개의 메서드나 생성자명으로 여러 가지 경우에 대응할 수 있으며 이는 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다.

 

 

 

관련 상속과 오버로딩 예시

class Animal {
    // 동물 클래스의 공통된 특성과 기능
}

class Lion extends Animal {
    // 사자 클래스, 동물 클래스를 상속받음
    // 동물 클래스의 기능을 그대로 사용하거나 확장할 수 있음
}

class Bird {
    // 새 클래스
    // 오리, 닭 등의 클래스가 여기서 상속받을 수 있음
}

class Duck extends Bird {
    // 오리 클래스, 새 클래스를 상속받음
    // 새 클래스의 특성을 그대로 사용하거나 확장할 수 있음
}

class Calculator {
    // 계산기 클래스
    // 오버로딩된 메서드를 가질 수 있음
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        Lion lion = new Lion();
        Duck duck = new Duck();

        Calculator calc = new Calculator();
        int sumInt = calc.add(5, 10); // 정수 덧셈 메서드 호출
        double sumDouble = calc.add(3.5, 2.7); // 실수 덧셈 메서드 호출
    }
}

 

Animal클래스를 상속받은 Lion클래스와 Bird 클래스를 상속받은 Duck 클래스를 정의하고 있습니다. 또한, Calculator 클래스에서는 add메서드를 오버로딩하여 정수와 실수를 각각 더하는 메서드를 구현하고 있습니다.

 

 

 


 

 

코드에서는 안 보이겠지만 코드 첫줄에 super();가 항상 있다.

부모의 생성자를 호출하는 것이다.

 

super부모 클래스에 아무것도 안 받는 생성자를 쓰겠다는 이야기이다.

부모가 없으면 Object클래스를 받는다.

class A{
	
	public A() {
		
	}
	
}
class Test extends A{
	
	
	public Test() {
		//super();	//부모 생성자호출한다. 안적어도 자동으로
		//default생성자든 매개변수 받는 생성자든
	}
	
	public int getTest() {
		A a = new A();
		return 0;
		
	}

 

 

class A{
	
	public A() {
		
	}
	public A(int a, int b) {  //super로 여기서 전달받는다.
		
	}
}
class Test extends A{
	public Test() {
		//super();	//부모 생성자호출한다. 안적어도 자동으로
		//default생성자든 매개변수 받는 생성자든
		super(0 ,0); //이런식으로 값을 전달해주고싶을때.부모한테 전달할때는super로만 생성자에선.
	}
	public int getTest() {
		A a = new A();
		return 0;
	}
}

 

 

 

 

 

728x90
반응형
profile

LoGin

@LoGinShin

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!