TSL_2021.12.14

유제협·2021년 12월 14일
0

TodaySpringLean

목록 보기
2/3

JAVA 정리

생성자란?

  • 인스턴스가 생성될 때 사용되는 '인스턴스 초기화 메소드' 입니다.
  • 즉, new 와 같은 키워드로 해당 클래스의 인스턴스가 새로 생성될 때, 자동으로 호출되는 메소드입니다.
  • 인스턴스 변수를 초기화 하는 용도로 사용합니다.

[ 작성 예시 ]

class Phone {
    String model;
    String color;
    int price;
	
    // 생성자
    Phone(String model, String color, int price) {
        this.model = model;
        this.color = color;
        this.price = price;
    }
}

public class Main {
    public static void main(String[] args) {
        Phone galaxy = new Phone("Galaxy10", "Black", 100);

        Phone iphone =new Phone("iPhoneX", "Black", 200);

        System.out.println("철수는 이번에 " + galaxy.model + galaxy.color + " + 색상을 " + galaxy.price + "만원에 샀다.");
        System.out.println("영희는 이번에 " + iphone.model + iphone.color + " + 색상을 " + iphone.price + "만원에 샀다.");
    }
}

[ 동작 설명 ]

  • 위 그림과 같이 new Phone("Galaxy10", "Black", 100); 에서 새로운 인스턴스가 생성되면 Phoe class에서 새로운 생성자Phone(~, ~, ~) 를 만들어서 다시 정의해 주고 이 class를 활용에 사용한다.

만약! 생성자를 만들어주지 않는다면?

  • class 에 선언된 변수는 instance 가 생성될 때 값이 초기화(initialize)된다.
    이 때, 변수의 선언부나 생성자를 통해서 초기화를 해주지 않는다면, 기본값(default value)를 가지게 된다. -> 기본값 ex) 0, 0.0, null

상속이란?

  • 상속이란 기존의 클래스를 재사용하는 방식 중의 하나입니다.
  • 한 번 작성한 코드가 재사용이 필요하다면, 변경사항만 코드로 작성하므로 상대적으로 적은 양의 코드를 작성할 수 있게 됩니다.
  • 이렇게 코드를 재사용하면, 코드와 클래스가 많아질수록 관리가 용이하다는 장점이 있습니다.

[ 작성 예시 ]

class Animal {
    String name;

    public void cry() {
        System.out.println(name + " is crying.");
    }
}

class Dog extends Animal {

    Dog(String name) {
        this.name = name;
    }

    public void swim() {
        System.out.println(name + " is swimming!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("코코");
        dog.cry();
        dog.swim();
        
        Animal dog2 = dog;
        dog2.cry();
//        dog2.swim(); // compile error
    }
}

[ 동작 설명 ]

  • Dog class가 Animal class를 상속받아 Dog class에서는 Animal의 cry()함수랑 Dog의 swim()함수를 다 사용 가능하나 Animal에서는 본인의 함수 cry() 만 사용 가능하다.

0개의 댓글