본문 바로가기

주제별로 살펴보기47

Java 생성자와 super(), Immutable Java 생성자의 특징 기본 생성자는 생성자 오버로딩이 하나라도 되어있으면 자동으로 생성되지 않는다. 기본 생성자나 아무것도 초기화하지 않는 생성자의 경우 super() 생성자를 자동으로 포함하여 컴파일한다. 사용자가 super()생성자를 호출하는 코드를 작성하지 않으면 자동으로 부모의 기본 생성자가 호출된다. 만약 부모 클래스에 기본 생성자가 없을 경우에는 필요한 인자를 super()의 인자를 통해 전달하는 코드를 작성해야만 한다. 부모 클래스의 생성자로 초기화 후 자식 클래스 생성자가 초기화를 진행해야 한다는 것. 자신의 생성자를 호출할 때는 this()를 사용한다. this() 생성자는 생성자 내에서만 사용할 수 있다. 생성자 안에서 super()생성자를 호출하는 코드 다음이나, 첫번째 줄에 위치해.. 2023. 11. 30.
Object 제공 메서드: toString() / equals() & hashCode() Object는 기본적으로 모든 클래스들이 상속하는 클래스. 이 메서드들은 오버라이딩하도록 제공되는 메서드들이다. Example public class example { public static void main(String[] args) { Car car = new Car(); System.out.println(car); // println(Object x) } } Object를 받아서 출력하는 메서드를 가지고 있음: Object로 참조할 수 있는 모든 매개변수는 모두 이 메서드를 사용할 수 있다. 해당 println()을 살펴보자. → toString()메서드가 실행되는 것. 다만, Car 클래스에 Object 메서드를 오버라이드하여 작성하지 않으면 쓸모가 없다. 왜 이것들을 오버라이드하여 사용하나? .. 2023. 11. 28.
프로퍼티 | 토막글 클래스 내부의 필드들과 별개로, getter와 setter는 프로퍼티라고 칭한다. 2023. 11. 28.
다형성 Polymorphism 다형성 Polymorphism 다형성 Polymorphism: 프로그램 언어 각 요소(상수, 변수, 식, 객체, 메서드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다(위키피디아, [다형성]). 또는 여러 형태를 받아들일 수 있는 성질, 상황에 따라 의미를 다르게 부여할 수 있는 특성 등으로 정의하기도 한다. 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야 할 때 타입 변경 없이 객체 주입만으로 수정이 일어날 수 있다. 또한 상속을 사용하여 중복 코드까지 제거할 수 있어 객체 지향 설계와 가까워질 수 있다. 다형성 구현에는 다양한 방법이 있을 수 있지만, 오버로딩, 오버라이딩, 함수형 인터페이스가 대표적이다. - Tecoble, [다형성] 페이지에서 오버로딩 Overloadi.. 2023. 11. 28.
상속 ~ Is a ... / Kind of ~ 관계 ( ~는 ...다/ ...는 ~ 종류이다.) 상속 = 일반화 기능 + 확장 기능 상속은 가장 강한 결합도를 가진다. 반드시 써야할 때만 사용하고 가급적 사용하지 않는 것이 좋다. 결합도를 낮추고 응집도를 높여야 활용성이 높아지므로. 아무것도 상속하지 않으면 자동으로 java.lang.Obeject를 상속 받는다. [접근제한자] [ abstract | final ] class 클래스명 extends 부모 클래스명 { ... } Question: 참조 변수가 자식 클래스의 객체를 참조하고 있는 경우 어떤 일이 발생할까? Car car = new Bus(); 와 같은 경우는 어떤일이 벌어질까? 객체는 Bus가 생성되지만 그 객체를 가르키는 car변수는 Car로 생.. 2023. 11. 28.
패키지 | 토막글 패키지 경로 오픈소스의 경우 패키지가 없으면 클래스에 대한 혼동이 오는 경우가 많았음. 도메인을 거꾸로 적어 명시하는 것으로 패키지를 구분하게 됨. 패키지 경로는 항상 클래스 가장 위에 작성한다. 패키지가 정의된 클래스 컴파일하기 javac -d {경로명} *.java -d 옵션을 사용하여 컴파일한다. 경로명에 . 를 입력하면 현재 디렉터리에 컴파일 결과가 생성되며, 패키지를 컴파일한 경우 해당 디렉터리가 모조리 생성된다. java com.example.util.Calculator JVM에 패키지명을 위와 같이 실행해주면, CLASSPATH에서 com > exapmle > util 폴더로 내려가 Calculator 클래스를 찾는다. 물론 IDE를 쓰면 자동으로 다 만들어준다. import import는 .. 2023. 11. 28.