상속 내용 정리 :
class Animal {
String name;
void setName(String name) { // 메서드에 값을 입력하고 객체 변수를 통해서 메서드 값에 입력한 값을 호출한다
this.name = name;
}
}
class Dog extends Animal { void sleep() {System.out.println( this.name + " zzz ");}}
class HouseDog extends Dog {void sleep(int hour){
System.out.println(this.name + " zzz in house for " + hour + " hours ");
} } // 부모 클래스의 메서드를 자식 클래스 메서드가 또 다시 재구현하는 행위를 메서드 오버라이딩이라 한다
public class Sample {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("poppy"); // 리턴값이 없는 메서드, 메서드에 입력 후 멤버변수(객체변수 ) 호출
System.out.println(dog.name);
dog.sleep();
System.out.println("--------오버라이딩----------");
HouseDog houseDog = new HouseDog();
houseDog.setName("happy");
houseDog.sleep(3);
생성자 내용 정리 :
HouseDog(String name){ // name 객체
this.setName(name); // setName 메서드
}
생성자는 객체가 생성될 때 호출이 되는 특별한 메서드이다
객체 변수에 값을 무조건 설정해야만 객체가 생성될 수 있도록 강제한 메서드
생성자 HouseDog에서 this. 는 현재의 객체를 지칭한다
this.setName(name); 현재 객체의 setName 메서드를 호출하여
생성자로 전달된 name 매개변수의 값을 현재 객체의 name 변수에 할당한다
HouseDog dog = new HouseDog("도그");
System.out.println(dog.name); // 도그 호출
생성자는 객체가 생성될 때 호출이 되는 특별한 메서드이다
생성자는 클래스명과 메서드명이 같다
리턴 타입을 정의하지 않는다(void도 포함)
생성자 오버로딩 :
HouseDog(int type) {
if (type == 1) {
this.setName("요크셔");}
else if (type == 2) {
this.setName("불독");
}
}
디폴트 메서드 :
default void printFood() {
System.out.println("my food is %s\n", getFood());
}
인터페이스의 메서드는 구현체를 가질 수 없지만 디폴트(defaul) 메서드를 사용하면
가능하다 자바 8버전 이후부터 가능
static method :
int LEG_COUNT = 4;
static int speed(){return LEG_COUNT * 30;}
interface Predator{ // 인터페이스는 키워드로 작성한다
String getFood(); // 인터페이스 메서드는 이름과 입출력에 대한 정의만 있고 그 내용은 없다 강제적으로 구현하기 해야하기 때문에
default void printFood() {System.out.println("my food is %s\n", getFood());} // 디폴트 메서드
int LEG_COUNT = 4;
static int speed(){return LEG_COUNT * 30;} // 스태틱 메서드
}
class Animal { String name; void setName(String name) {this.name = name;}}
class Tiger extends Animal implements Predator {
public String getFood() {
return "바나나";
}
} // interface Predator를 구현하기 위해선 implements 키워드 사용
class Lion extends Animal implements Predator {
public String getFood() {
return "사과";
}
} // interface Predator를 구현하기 위해선 implements 키워드 사용
class Zookeeper { void feed(Tiger tiger) {
System.out.println("feed apple"); }
void feed (Lion lion){
System.out.println("feed banana");
}
}
다형성 :
다형성이란 하나의 인터페이스로 다양한 객체들이 서로 다른 방식으로 반응하는 것
다형성 방식은 두 가지가 있다
상속을 통한 다형성 extends
인터페이스를 통한 다형성이다 implememts
'Java' 카테고리의 다른 글
2024년 6월 11일 KH 교육 전 Java 예습 스레드 (0) | 2024.06.07 |
---|---|
2024년 6월 11일 KH 교육 전 Java 예습 (예외 처리) (0) | 2024.06.07 |
2024년 6월 11일 KH 교육 전 Java 예습 추상클래스, static 비교 (0) | 2024.06.07 |
2024년 6월 11일 KH 교육 전 Java 예습 : static, interface, (1) | 2024.06.06 |
2024년 6월 11일 KH 교육 전 JAVA 예습 : 뤼튼 활용하기(생성자, 변수 이름, this) (0) | 2024.06.06 |