분류 전체보기(129)
-
상속_메서드 오버라이딩
상속을 통한 코드 재사용에 대해 계속해서 학습중이다. public class SuperAnimal { int legCount; public void move() { System.out.println("동물은 움직입니다."); } public void eat() { System.out.println("먹습니다."); } public void breath() { System.out.println("동물은 숨도 쉬죠."); } } public class AnimalMain { public static void main(String[] args) { SubCheetah cheetah = new SubCheetah(); cheetah.eat();// 먹습니다. cheetah.move();// 동물은 움직입니다. ..
2024.01.28 -
상속_기능추가
이번 내용 별 거 없다. public class SuperAnimal{ int legCount; public void move() { System.out.println("동물은 움직입니다."); } public void eat() { System.out.println("먹습니다."); } public void breath() { System.out.println("동물은 숨도 쉬죠."); } } 기존엔 move(), eat() 만 있었는데, 필요에 의해 breath() 를 추가 했다. 이를 통해 SuperAnimal 을 상속 받는 모든 클래스들은 breath() 를 사용할 수 있게 된다. 뭐 그런 내용이다. SubBird bird = new SubBird(); bird.eat(); bird.move();..
2024.01.28 -
상속_메모리 구조
김영한 님께서 말씀하시길. 정말정말 정말 중요한 내용이니 꼭 이해 하랍신다. SubBird bird = new SubBird(); new SubBird()를 호출하면 어떤 일이 벌어질까? SubBird 의 인스턴스가 생성된다. public class SubBird extends SuperAnimal{ public void fly() { System.out.println("새는 하늘을 날지."); } } 여기서 SubBird 는 SuperAnimal 클래스를 상속한다. SuperAnimal 클래스의 코드를 재'사용' 한다는 뜻이다. SuperAnimal 클래스를 사용! 코드를 사용하려면 뭐다? 인스턴스를 생성해야 한다. 결론 - 상속 관계를 갖는 하위 클래스의 인스턴스를 생성하면, 해당 클래스의 상위 클래..
2024.01.28 -
상속_특징
이전 글에서는 상속이 뭔지, 사용법은 어떻게 되는지 등에 대해 알아봤다. 이번엔 상속의 특징들에 대해 알아보자. 상속도 상속관계에 있을 때 위의 그림과 같이 표현된다. extends 를 통한 상속에서는 실선과 화살표로 상속 관계를 나타낸다. 그림에서 알 수 있듯, sub class 들은 super class 를 참조하여 상위 클래스의 정보들을 알아낸다. 어떻게? extends 키워드 + 상위 클래스명 으로. 반면, 상위 클래스는 하위 클래스의 정보를 알 수 없다 (아무 키워드도 적어주지 않았으니까) 따라서, 상속 관계가 맺어져 있어도 하위 클래스에 있는 정보를 활용할 수 없다. (물론 static 변수, static 메서드 라면 사용 되겠지만) 단일 상속 자바에서는 extends 를 통한 상속 대상(su..
2024.01.28 -
상속
상속이란? 기존 코드를 계승, 확장하여 재사용하는 기술이다. 대충 글로 끄적여도 이해는 잘 안 된다. 써보자. public class SuperAnimal { int legCount; public void move() { System.out.println("움직입니다."); } public void eat() { System.out.println("먹습니다."); } } 상속 사용법 = 클래스 파일에서 class 명 뒤에 extends 키워드와 함께 상속 받을 super class 명을 적으면 된다. public class SubBird extends SuperAnimal{ public void fly() { System.out.println("새는 하늘을 날지."); } } public class An..
2024.01.28 -
static_메서드2
정적 메서드는 객체 생성없이 클래스에 있는 메서드를 바로 호출할 수 있다는 장점이 있음. 하지만 정적 메서드에도 사용 제약이 존재함.( = 아무 때나 사용할 수 있는 거 아님) 정적 메서드 사용법 static 메서드는 static 만 사용할 수 있음. ㄴ 머선 소리지?? - 클래스 내부의 기능을 사용할 때, 정적 메서드는 static이 붙은 메서드나 정적 변수만 사용할 수 있음. - 클래스 내부의 기능을 사용할 때, 정적 메서드는 인스턴스 변수나, 인스턴스 메서드를 사용할 수 없음. 반대로, 모든 곳에서 static 을 호출할 수 있음 ㄴ ??? - 정적 메서드는 공용 기능임. 따라서 접근 제어자만 허락한다면 클래스를 통해 모든 곳에서 static 호출 가능 설명을.. 봐도 모르겠네. 코드 쳐보면서 이해..
2024.01.23