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();
}
}
[ 동작 설명 ]
- Dog class가 Animal class를 상속받아 Dog class에서는 Animal의 cry()함수랑 Dog의 swim()함수를 다 사용 가능하나 Animal에서는 본인의 함수 cry() 만 사용 가능하다.