생성자자바에서 객체를 생성시 new 키워드를 사용함클래스명 뒤에 나오는 괄호 () 는 메서드를 의미이를 생성자 라고 부른다.해당 생성자는 클래스가 인스턴스화될 때 초기 설정을 도와준다.기본 생성자자바에서 클래스에 아무런 생성자를 정의하지 않는다면기본 생성자를 자동으로 제공한다.실제 작성한 코드public class 동물 { }자바 컴파일단계에서 기본 생성자 주입public class 동물 { public 동물() {} }인자가 있는 생성자필요에 따라 인자를 받는 생성자도 추가 가능합니다.public class 동물 { public 동물(String name) { System.out.println(name); } }동물 뽀로로 = new 동물("뽀로로"); 로 호출가능주의인자가 있는 생성자가 하나라도 정의..
변수에 값을 저장하는 방식에는 값에 의한 호출(Call By Value) 와 참조에 의한 호출(Call By Reference) 로 구분됨.기본 자료형 변수의 복사 : Call By Valuepublic class CallByValue { public static void main(String[] args) { int a = 10; int b = a; b = 20; System.out.println(a); // 10 System.out.println(b); // 20 } }변수 a 에 10을 대입하고b에 해당 값을 복사한 다음에 ( 10 할당 )b에 20 대입a 는 10 출력b는 20 출력기본 자료형의 변수의 경우 단순히 값만 할당되기에, int b = a; 로 할당해도, 10의 값이 할당됨.객체 참조변..
추상 메서드와 추상 클래스추상 메서드선언만 있고 구현부가 없는 메서드이다.메서드에서 어떤 일을 해야하는지만 알려주고, 실제로 그 일을 어떻게 할 지는 하위 클래스에서 결정한다.같은 메서드명을 가지면서 각각 다른 기능을 수행 할 수 있게 된다.추상 메서드 예시public class Driver { public static void main(String[] args) { 동물[] 동물들 = new 동물[5]; 동물들[0] = new 쥐(); 동물들[1] = new 고양이(); 동물들[2] = new 강아지(); 동물들[3] = new 송아지(); 동물들[4] = new 병아리(); for (동물 동물 : 동물들) { 동물.울어보세요(); } } private static class 동물 { void 울어보세..
다형성이 지원되지 않는 언어의 문제점함수 이름의 다양화 필요add(int, int)와 같은 함수가 있을 때, 정수와 부동소수점 수를 더하는 경우에는 새로운 함수명 addIntDouble(int, double)을 만들어야 합니다.함수가 많아질 경우의 문제예를 들어, 자바에서는 정수와 부동소수점 수로 42개 이상의 함수를 만들어야 다양한 조합을 처리할 수 있습니다.다형성이 지원되는 언어의 장점오버로딩의 편리성하나의 함수명을 가지고 인자 목록만 변경하여 다양한 경우를 처리할 수 있습니다.제네릭의 활용하나의 함수로 여러 타입을 처리할 수 있습니다.코드의 간결성같은 기능을 하는 함수가 하나면 코드가 깔끔해집니다.오버라이딩의 중요성하위 클래스 메서드의 자동 호출상위 클래스의 메서드를 하위 클래스에서 재정의하면, 이..
객체 멤버의 접근 제어자에 대한 이해자바의 접근 제어자private클래스 내부에서만 접근가능default같은 패키지 내에서만 접근가능protected같은 패키지 또는 서브 클래스에서 접근가능public어디서든 접근 가능객체 멤버와 정적 멤버객체 멤버객체가 생성될 때마다 각 객체의 내부에 존재정적 멤버클래스 단위로 하나만 존재함.문제package org.example.연습장.encapsulation01; public class ClassA { private int pri; int def; protected int pro; public int pub; void runSomething() { } static void runStaticThing() { } }Class A 의객체멤버privatedefaultpro..
DTO (Data Transfer Object)개요데이터를 전달하기 위한 객체임계층 간의 데이터 교환을 위해서 사용됨.View 와 Controller 사이에서 자주 활용됨.특징Getter / Setter 메서드를 포함합니다데이터를 쉽게 넣고 , 빼기 위한 메서드를 제공비즈니스 로직을 미포함데이터 전송 에 집중합니다.별도의 비즈니스 로직을 포함하면 안됩니다.예제// 가변 객체 예시 public class MemberDto { private String name; private int age; // Getter, Setter 생략 } // 불변 객체 예시 public class MemberDto { private final String name; private final int age; // Getter, ..