package day08;public class Fish extends Animal { // extends 한 순간 다 물려받은 것이다. // if class Fish에서 오류가 난다면 상속받은 Animal에서 기본 생성자를 지웠거나 , default생성자를 안만들었을 경우 String name;public Fish() { super("물고기과");// 직접 선언해 주는 이유는 안해주게 되면 동물의 종류가 선언되기 때문에} public Fish(String name) { // name에 대한 파라미터값을 만든 것. //super(); 자동 생성이기 때문에 super("물고기과"); // 직접 선언해 주는 이유는 안해주게 되면 동물의 종류가 선언되기 때문에 this.name = name;}public vo..
package day08;public class DogTest2 {public static void main(String[] args) {/*Animal a = new Animal();System.out.println(a.kind);Animal a1 = new Animal("늑대");System.out.println(a1.kind);// kind 가 변하는 단계를 확인할 수 있다. */Dog d = new Dog(); // Default d.Print();Dog d2 = new Dog("진돗개","쫑쫑"); // Parameter로 d2.Print();Dog d3 = new Dog("진돗개2","진돗개3","진돗개4");d3.Print();}}
package day08;public class DogTest {public static void main(String[] args) {/*// TODO Auto-generated method stub/*Animal a =new Animal();System.out.println(a.kind);a.breath();Dog d = new Dog();//System.out.println(d.super.kind); // Static 이라는 곳에는 super자체를 쓸 수가 없다.System.out.println(d.kind);System.out.println(d.name);d.Print(); d.breath();Animal d2 = d ; // Is a 관계와 똑같은 형태인데 다른 모습 */Dog d =new Do..
package day08;public class Animal {String kind = "동물의 종류"; // 동물의 종류가 나오기전에 임시적으로 null값으로 선언되어 있다.public Animal() { // 기본 생성자의 형태 super 생략된 형태System.out.println("Animal() call");}public Animal(String kind) { // Super 생략된 형태this.kind = kind;}public void breath() // 메소드의 선언부{System.out.println("폐로 숨쉬기.");}public void Print() {System.out.println("*** Animal ("+kind+"정보) ***"); }/* * public static v..
내가 프로젝트를 하면서 오버라이딩을 잘 설정 했는지 궁금할 때 @Override를 쓰게 되면 오버라이딩을 헷갈리지 않고 할 수 있게 도와준다 . 만약 내가 뭔가 잘못 설정을 했다면 오류 표시로 나타나게 해준다. 좋은거 같다.
상속 공부를 하면서 헷갈렸던 부분이고 용어로 이해를 하니까 너무 어려웠던 부분이 있다. 바로 This와 Super의 차이이다. 먼가 느낌적인 느낌으로 this는 같은 클래스 내에서 전역변수를 의미하고 Super는 상위 부모 클래스를 가르킨다 . 정도로 알고 있었다 . 틀린 말은 아니지만 코딩을 하면서 예매했다. 더 알게 된 점이 있는데 this는 this를 선언해준 클래스내에서 this를 해준 변수를 찾으면서 this를 선언해준 클래스 내에 없다면 상위 클래스로 찾으러 가고Super는 애초에 처음부터 상위 클래스 내애서 찾게 된다는 것이다. 엄청 대단한건 아니지만 그냥 알게된 사실이다.