자바는 클래스에서 이중상속이 되지 않는다.

위에 코드는 무기 타입을 가지고 만들어진 칼 객체이다.

이때 칼은 무기의 형태로 만들어진 객체이다.
그래서 칼이 갖고 있던 함수의 기능은 쓰지 못하는것이다.

숫자에서 duoble 은 실수 가 들어가야한다. 그리고 숫자 5는 정수이다. 원래라면 안들어가져야지 정상이지만
자바에서 이건 자동으로 형변환이 되어서 들어가진다. 대신 형변환되니까. 5.0 으로 바뀌는 것이다.
그래서 2번쨰 코드에서 칼 객체는 타입이 무기 인채로 생성됐으니 숫자 5처럼 형변환이 되어야된다.
그럼 숫자가 5.0이 된것처럼 칼도 자신이 가진 함수는 없앤 상태로 무기라는 형태로 바뀌게되는것이다.
만약 칼이 공격이라는 함수를 그대로 갖고 가게 하고 싶으면 이렇게 하면된다.

매개변수 이용해서 예제 문제 풀기

위에 문제처럼 공격 메소드를 실행시키면 각각 사람과 무기가 나오게 해야한다.
일단 전사 클래스 부터 만들어야한다.
그리고 지금 함수 출력문에서 바뀌는 부분들이 주어와 목적어 이렇게 두개니까
함수도 2개의 인자를 받는 형태의 함수를 만들어주자
문자열을 받고 있으니 매개변수에도 String 타입을 넣어서 만들어주자
함수를 만들었으면 이제 메인 클래스에서 각각 알맞는 인자를 넣어주면 끝

다른 예제 문제

공격함수를 만들고 그떄 받은 정보들을 저장해서 재공격 함수에 넣어줘야지 이문제를 풀수있겠다.
재공격은 따로 받는 인수가 없기때문에 바로 전 공격 함수가 낸 값을 그대로 도출해야된다.
공격 함수에 받는 매개변수들은 지역변수들이다. 그래서 그 함수 내에서만 쓸수있는 것이다.
공격함수에 저장된 무기명과 사람이름을 다른곳에 저장에 놓아서 재공격할떄도 쓸수있게 해보자

공격 함수에서 쓰인 매개변수를 기억하기 위해서 전사 클래스에 name2 와 wep2 를 이용해서 저장했다.
그리고 재공격함수에 그 변수들을 이용해서 결과가 도출하게 했다!
그리고 더 깔끔하게 정답을 수정하자면

공격함수와 재공격함수에 같은형태의 함수가 있기때문에
공격함수에 재공격함수를 넣어가지고 그대로 나올수 있게한다.
지역변수와 전역 변수 차이
지역변수는 아까 위에서 처럼 공격함수 안에서 만들어진 변수들로 다른 지역(함수, 같은 클래스지만 그 만들어진 함수밖)에서는 쓸수가 없다.
하지만 전역변수는 클래스에서 선언 되었다면 그 클래스 내부라면 어디에서든 쓸수 있다. 함수안에서도 쓸수있고
함수 밖에서도 쓸수있다. 다만 클래스 안에 있고 함수 밖에서 선언되어면 한다.
'자바' 카테고리의 다른 글
| 2023-06-21 추상 클래스, interfacce, 올바른 리턴 타입으로 메서드 만들기 예제 문제 (0) | 2023.06.21 |
|---|---|
| 2023-06-20 클래스 생성자 만들기 (0) | 2023.06.20 |
| 2023-06-18 배열의 복사 (0) | 2023.06.18 |
| 2023-06-16 return , 상속 (2) | 2023.06.16 |
| 2023-06-15 메서드 , 클래스, (0) | 2023.06.15 |