Programming language/Java

[생활코딩] JAVA 기초 8일차

은성 개발자 2022. 1. 30. 16:33
728x90

[상속]
- 한 객체의 필드(변수)와 메소드를 다른 객체가 물려받을 수 있는 기능

< 효과 >
- 코드 중복를 제거
- 유지 보수에 좋음

<코드 예시>

class SubstractionableCalculator extends Calculator{
	public void substract() {
		System.out.println(this.left-this.right);
	}
}

 

- extands 객체 이름 : 객체의 기능을 확장
- SubstractionableCalculator가 Calculator의 기능을 부모로 해서 상속
- this.left, this.right는 Calculator 객체에서 정의된 것이다.

 

객체에 메소드를 추가하는 게 어려움
1. 객체를 자신이 만들지 않아서 소스를 변경할 수 없음. (변경할 수 있다고 해도 원소스를 업그레이드하면 추가하고 싶은 메소드가 사라짐)
2. 객체가 다양한 곳에서 활용되고 있는데 메소드를 추가하면 다른 곳에서는 불필요한 기능이 포함될 수 있음. 


[ 클래스 다이어그램 ]
- 클래스와 클래스의 관계를 그림으로 간단하게 표현하는 것

[ 생성자 ]
- 객체 생성
- 그 과정에서 해야 할 일을 생성자 메소드에 지정해서 초기화 작업할 수 있음

- 객체를 생성할 때 자동으로 그 생성자를 만들어준다
- 매개변수가 있는 생성자가 있을 때 자동으로 기본 생성자를 만들어주지 않음

- 부모클래스에 기본 생성자를 만든다

super();
- super = 부모 클래스
- () 생성자
- 부모클래스의 생성자

[ overriding ]
- 부모가 가지고 있는 메소드를 물려받지만 자식이 필요에 따라 그 메소드를 재정의해서 기능을 변경
- 부모의 return datatype이 자식의 return datatype과 같아야 overriding가 가능
<예시>

//부모클래스의 메소드
public void avg(){
  System.out.println((this.right+this.left)/2);
}
//자식클래스의 메소드
public void avg(){
  System.out.prinln("평균은 ",(this.right+this.left)/2);
}

//void대신 int 쓰면 안됨. datatype이 다르면 X
//public int avg(){
//  System.out.prinln("평균은 ",(this.right+this.left)/2);
//}


[메소드의 서명 signature]
- 메소드의 이름
- 메소드 매개변수의 숫자와 데이터 타입, 순서
-메소드 리턴 타입


[ overloading ]
- 메소드의 이름이 같아도 매개변수의 형식이나 숫자 다르면 다른 메소드로 인식

 


자바 공부 파이팅!!

 

강의 출처 :

https://www.youtube.com/watch?v=QK8bgsenqLY&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=84 

생활코딩 자바

 

728x90
반응형