class Main {
public static void main(String[] args) {
계산기.합(10,20);
계산기.합(30,40);
int rs = 계산기.합(10,20); // int rs =System.out.println(a+b);
}
}
class 계산기 {
static void 합(int a , int b) {
System.out.println(a+b);
}
}
return 이 필요한 이유 위에 코드 처럼 정수 타입을 담는 rs 엔 저런 a+b를 출력하겠다라는 값을 넣지는 못한다
그래서 아래 코드 처럼
class Main {
public static void main(String[] args) {
계산기.합(10,20);
계산기.합(30,40);
int rs = 계산기.합(10,20) ; // int rs =System.out.println(a+b);
}
}
class 계산기 {
static int 합(int a , int b) {
System.out.println(a+b);
return a+b;
}
}
이런식으로 return 값을 넣어주는 것이다.
참고로 return 을 쓰려면 void 가 아니라 원하는 return 값의 타입을
적어줘야한다. 저기 코드에서는 정수값을 원하니까
int 를 써준것이다.
원래 썻던 void 는 return 값을 쓰지 않게 다는 것이다.
만약 문자열 형태인 값을 return 하고 싶으면
static String () { } 이런식 으로 만들어야한다.
상속
상속에 대해 알아보자
// 문제 : 아래와 같이 출력되도록 해주세요.
// 조건 : `숨쉬다` 기능을 중복하지 말아주세요.
class Main {
public static void main(String[] args) {
사람 a사람 = new 사람();
a사람.숨쉬다();
}
}
class 동물 {
void 숨쉬다() {
System.out.println("숨쉬다.");
}
}
class 사람 {
void 숨쉬다() {
System.out.println("숨쉬다.");
}
}
숨쉬다 함수가 겹치고 있는 상태이다.
class 사람 extends 동물{
}
이렇게 하면 사람 is 동물 이런식을 된다. 동물이 할수 있는 것은 사람도 할수 있다.
그래서 동물 안에 있는 함수를 쓸수 있게된다.

위에 있는 코드 처럼 분명 클래스 사람을 가지고 만든 객체에 숨쉬다라는 함수는
없지만 extends 를 써줌으로써 클래스 동물 설계도에 있는 함수를 쓸수 있게된다.
이런식으로 설계도가 다른 설계도의 있는 것들을 쓸수 있게해주는 것이 상속이다.
그리고 그렇다면 조금 변형 해보자
class 동물 {
void 숨쉬다() {
System.out.println("동물 숨쉬다.");
}
void 걷다( ) {
System.out.println("걷는다.");
}
}
class 사람 extends 동물 {
void 숨쉬다() {
System.out.println("사람 숨쉬다.");
} //메서드 오버 로딩 -메서드를 재정의 하는것
//부모가 물려준
// 함수 안쓰고 자기꺼 쓰기
}
사람 클래스에도 똑같은 이름의 함수를 적어두고 실행문을 조금 다르게 해보자
저러고 함수를 실행시키면 사람 숨쉬다.가 나온다.
원래 물려받은 동물 숨쉬다. 를 덮어 쒸어서 사람숨쉬다가 나오는것이다.
그럼 사람 클래스 안에는 몇개의 함수가 있는 것일까?
3개 ?2개? 1개?
바로 3개이다.
동물 클래스 한테 물려받은 함수 2개와 사람 클래스가 가지고 있는 1개로
총3개이다. 메서드 오버로딩을 해서 부모에게 받은 함수가 사라지는 것은
아니고 겹쳐친다고 생각하면 된다.
참고)
class 사람 extends 동물 {
void 숨쉬다(int a) {
System.out.println("사람 숨쉬다.");
}
void 숨쉬다() {
System.out.println("사람 숨쉬다.");}
메서드 오버라이딩
한 클래스 내에서 같은 이름의 메서드를 매개변수를 다르게 하여 정의할 수 있는 것
'자바' 카테고리의 다른 글
| 2023-06-19 클래스 타입 변환, 매개변수 이용하기 (0) | 2023.06.19 |
|---|---|
| 2023-06-18 배열의 복사 (0) | 2023.06.18 |
| 2023-06-15 메서드 , 클래스, (0) | 2023.06.15 |
| 2023-06-14 while , 배열 (0) | 2023.06.14 |
| 2023-06-11 자바 switch (0) | 2023.06.11 |