본문 바로가기

Java/Java 상속

Java에서 상속

728x90
반응형

객체 지향에서 method, class, instance에 대한 개념을 이해했다면 다음에 들을 수업이 이 상속 수업이다. 

 

사실 멀 얼만큼이나 이해했는지는 모르겠지만 일단 국비교육전에 들을 수 있는 것들을 전부 듣고 시작할 예정이다. 

 

먼저 간단한 계산기 프로그램을 아래와 같이 만든다. 

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}

public class InheritanceApp {

	public static void main(String[] args) {
		Cal c = new Cal();
		System.out.println(c.sum(2, 1));
		}

	}


써놓고 보니 진짜 간단한데 과연 이걸 내가 아무것도 안보고 혼자서 쓸 수 있을까? 라는 의문이 든다. 

이 영상 끝나면 한번 시도해 봐야겠다. 

 

각설하고 상속을 배워야 하는 이유에 대해서 영상이 설명하고 있으니 나도 예시를 들어가면서 블로깅해야지

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}

// 근데 더하기 말고 빼기 기능도 필요하다고 했을때, 다만 저 Ca1 메소드를 수정할 수 없는 상황이라고 한다면..

class Cal2 {
	public int sum(int v1, int v2) {
		return v1+v2;
	}
	public int minus(int v1, int v2) {
		return v1-v2;
	}
	
}
	

public class InheritanceApp {

	public static void main(String[] args) {
		Cal c = new Cal();
		System.out.println(c.sum(2, 1));
		}

	}


ㅇㄹ만약 Cal 이라는 계산 함수가 그대로 있는데 수정할 수 없는 상황일때. 그리고 더하기 기능뿐만 아니라 빼기 기능을 더해줘야 한다고 했을때 

 

위에 쓰인 코드처럼 수정해 볼 수 있다. 

 

but 문제점은 Cal1 에 있는 더하기 메소드에 오류가 있을때 그걸 복사붙여넣기한 저 Cal2 역시 일일이 바꿔야 한다는점.

그리고 만약에 Cal2 만 있는게 아니라 Cal 100까지 있다면?

 

개고생 노가다를 하며 코드를 전부 수정해야할것이다. 

우리는 그럴려고 코딩을 배우는것이 아니기 떄문에...

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}

class Cal3 extends Cal{
	
}

public class InheritanceApp {

	public static void main(String[] args) {
		Cal c = new Cal();
		System.out.println(c.sum(2, 1));
		}

	}

	

Cal3 뒤에 써준 extends Cal 이라는게 이 메소드는 Cal 이라는 method의 변수와 기능을 상속받고 있다는 뜻이다. 

이렇게 써줌으로써 Cal3은 Cal을 상속받고 있는것이다. 

 

그래서 활용해서 써주면 이렇게 된다

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}

class Cal3 extends Cal{
	
}

public class InheritanceApp {

	public static void main(String[] args) {
		Cal c = new Cal();
		System.out.println(c.sum(2, 1));
		Cal c3 = new Cal3();
		System.out.println(c3.sum(5, 2));
		}

	}

	

짜잔

 

 

c3은 Cal3 클래스를 복사한 인스턴스고, Cal3은 Cal을 부모로 하는 자식 클래스이다. 

이런식으로 활용하면 오류 수정을 한번에 할 수 있고, 코드를 쓰는 양도 줄일 수 있는것이다. 

 

그래서 상속을 써야하는거다

 

 

예아 베이비

728x90
반응형

'Java > Java 상속' 카테고리의 다른 글

상속과 생성자  (0) 2020.12.01
this & super  (0) 2020.12.01
Overriding vs Overloading  (0) 2020.12.01
Overriding  (0) 2020.12.01