2021년 06월 05일 JAVA 스터디 과제

2hyeon2gyun·2021년 6월 5일
0

2021년 05월 22일부터 JAVA 스터디를 시작하였다 오늘은 두번째 과제
참고 서적은 자바의 정석 - 남궁 성 지음

오버로딩 오버라이딩의 차이점

오버로딩 오버라이딩의 차이점을 알기 전에 그 둘의 대해 알아보겠다.

오버로딩

한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩' 또는 간단히 오버로딩이라 한다.
오버로딩의 장점으로 같은 기능의 메서드를 하나의 이름으로 정의하여 사용자들이 해당 메서드 이름을 보며 같은 기능임을 유추 가능하며 작성자도 메서드 이름을 절약할 수 있다. 오버로딩의 조건이 있는데 조건은 다음과 같다.

1. 메서드 이름이 같아야 한다
2. 매개 변수위 개수 또는 타입이 같아야 한다.

오버라이딩

조상 클래스로 부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속 받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우에 사용한다. 오버라이딩의 조건은 다음과 같다.

자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와

1. 이름이 같아야 한다.
2. 매개변수가 같아야 한다.
3. 반환 타입이 같아야 한다.

차이점

오버로딩과 오버라이딩은 서로 혼동하기 쉽지만 사실 그 차이는 명백하다. 오버로딩은 기존에 없는 새로운 메서드를 추가하는 것이고, 오버라이딩은 조상으로 부터 상속받은 메서드의 내용을 변경하는 것이다.

추상클래스 인터페이스 차이점

추상클래스 인터페이스의 차이점을 알기 전에 그 둘의 대해 알아보겠다.

추상클래스

클래슨를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상클래스로서 중요한 의미를 갖는다. 추상 클래스는 키워드 'abstract'를 붙여야 한다. 추상클래스 사용 이유는 다음과 같다.

1. 공통된 필드와 메서드를 통일
2. 실제클래스 구현시 시간 절약
3. 규격에 맞는 실제클래스 구현

다음 코드는 동물이라는 추상 클래스를 통한 하나의 예제 코드이다.

//추상 클래스
public abstract class Animal {
	public String kind;
	
	public void breath() {
		System.out.println("숨 쉰다");
	}
	
	public abstract void sound();
}

//실체 클래스 Dog
public class Dog extends Animal{
	public Dog() {
		this.kind = "포유류";
	}

	@Override
	public void sound() {
		// TODO Auto-generated method stub
		System.out.println("멍멍");
	}
}

//실체 클래스 Cat
public class Cat extends Animal{
	public Cat () {
		this.kind = "포유류";
	}

	@Override
	public void sound() {
		// TODO Auto-generated method stub
		System.out.println("야옹야옹");
	}
}

//구현 클래스
public class AnimalExample {
	public static void main(String[] args) {
		Dog dog = new Dog();
		Cat cat = new Cat();
		
		dog.sound();
		cat.sound();
		
	}
}

인터페이스

인터페이스는 일종의 추상 클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.

차이점

추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아무것도 없고 밑스림만 그려져 있는 '기본 설계도'라 할 수 있다.
인터페이스도 추상클래스처럼 완성되지 않은 불완전한 것이기 때문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다.

1. 추상클래스 abstract VS 인터페이스 interface
2. 추상클래스 extends VS 인터페이스 implements
3. 추상클래스 단일 상속 VS 인터페이스 다중 상속
4. 추상클래스 일반메서드와 추상메서드 가능 VS 인터페이스 추상메서드만 가능
profile
오늘보다 내일

0개의 댓글