JAVA

자바 상속 extends

커피마시기 2023. 9. 29. 22:14

 

 

 

 

상속

 

자바 상속이란?

  • 기존 클래스의 변수와 메소드를 물려 받아 새로운 클래스를 구성하는 것을 의미한다
  • 기존에 정의되어 있던 클래스를 부모 클래스 또는 상위 클래스라고 하며 상속을 받아 새롭게 작성된 클래스를 자식클래스 또는 하위 클래스라고 한다

 

 

특징

  • 상속은 extends 를 사용하며 다중상속을 지원하지않아 하나의 클래스만 지정 할 수 있다
  • 자식 클래스는 또 다른 클래스의 부모 클래스가 될 수 있다
  • 자바에서 모든 클래스는 Object 클래스를 자동으로 상속받게 되어있어 equals(), toString() 같은 메서드를 바로 사용 할수 있다
  • 접근제한자가 public, protected에 한하여 자식클래스에서 override하여 수정하여 사용 할 수 있다.

 

 

단점

  • 캡슐화를 깨트린다, 부모 클래스가 어떻게 구현되는지에 따라 하위 클래스의 동작에 이상이 생길 수 있다
  • 부모 클래스의 구현 내용을 알아야 하위 클래스에서 해결 할 수 있다
  • 상속을 여러번 반복하면 계층 구조를 따라다녀야 하므로 복잡한 구조를 가지게 되어 자식 클래스가 많아지게 되는 경우 부모 클래스의 소스코드 변경이 힘들다

 

 

장점

  • 기존 작성된 클래스를 재사용 할 수 있어 코드의 중복을 줄일 수 있다
  • 클래스 간 계층적 분류 관리가 가능하여 유지보수가 용이하다
  • 객체지향 프로그래밍에서의 다형성(어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질)

 

 

 


 

 

 

상속 extends 활용해보기

 

  • 부모 클래스 생성하였고 private String position을 사용하기 위해 getter setter를 만들어주었다
public class Note2 {
	
	String name;
	private String position;
	
	public Note2(String name, String position) {
		this.name = name;
		this.position = position;
	}

	public String getPosition() {
		return position;
	}

	public void setPosition(String position) {
		this.position = position;
	}
	
	
}

 

 

 

 

  • Note2 인 부모 클래스를 상속 받을 Note1 클래스를 만들어주었고 
  • 생성자를 만들어 super()를 통해  부모클래스의 필드를 사용
  • 출력메소드 showInfo()에서 부모클래스의 private가 걸린 position을 쓰기 위해 get을 이용하였다
public class Note1 extends Note2 {
	
	private String team;
	
	public Note1(String name, String position, String team) {
		super(name, position);
		this.team = team;
	}
	
	public void showInfo() {
		System.out.println("팀 : " + team + " / " +  " 이름 : " + name + " / " + " 포지션 : " + getPosition() );
	}
}

 

 

 

  • 출력을 하기위한 메인 클래스에서 코드 작성
	public static void main(String[] args) {
		
	Note1 n1 = new Note1("손흥민", "FW", "토트넘");
	Note1 n2 = new Note1("김민재", "DF", "뮌헨");
	Note1 n3 = new Note1("이강인", "MF", "PSG");
		
	n1.showInfo();
	n2.showInfo();
	n3.showInfo();
		
	}

 

 

 

  • 출력한 결과

 

 

 

 


 

 

-Today short review-

 


배운것을 토대로 새로 만들어 보았는데 틀린점이나 잘못 알고 있는 부분이 있다면 알려주시면 감사하겠습니다.

'JAVA' 카테고리의 다른 글

자바 static  (0) 2023.10.10
자바 인터페이스(Interface)  (0) 2023.10.06
자바 Map  (0) 2023.09.27
자바 List  (0) 2023.09.23
자바 - 배열/객체 배열  (0) 2023.09.20