전체 글146 자바 String 클래스 자바 String 클래스 문자열 생성 방법 문자열은 객체로 취급한다. String str1 = new String("Hello World") String str2 = new String("Hello World") stack메모리에 저장된 str1객체를 Heap 메모리에 새로운 Stirng객체를 생성(str1에서 HelloWorld를 가리킨다) new를 사용하면 Heap Memory에 저장 String str1 = "HelloWorld" // 리터럴 상수 String str2 = "HelloWorld" // 리터럴 상수 stack메모리에 저장된 str1객체를 Literal Pool 메모리에 새로운 문자열 객체를 생성 (str1에서 HelloWorld를 가리킨다) Literal Pool 재활용 메모리 공간 .. 2024. 1. 29. 자바 API 자바 API 직접 만들어서 사용하는 Class 최대값, 최소값을 구하는 클래스 배열을 돌면서 0번째 인덱스 항을 초기값으로 설정하고 인덱스 1부터 비교하면서 최대, 최소값 찾기 public class MinMaxFinder { private MinMaxFinder(){ // 객체 생성을 막기 위해 private으로 생성자를 구현 } public static int findMin(int[] arr){ int min = arr[0]; // 초기값 for (int i = 1; i < arr.length; i++) { if (arr[i] < min){ min = arr[i]; } } return min; } public static int findMax(int[] arr){ int max = arr[0]; //.. 2024. 1. 29. 자바 최상위 클래스 Object 자바 최상위 클래스 Object Object 클래스를 이용하여 객체 생성하기 어떤 클래스 한 개를 만들 때 생략된 코드? default pakage ( import java.lang) java.lang.Object(최상위 클래스) : extends Object default 생성자 : public A(){ super() } Object 클래스에 업캐스팅을 하면 자식 클래스의 메서드를 사용할 수 없기 때문에 다운 캐스팅을 하여서 사용 Object obj = new A(); // Upcasting ((A)obj).display(); // Downcasting Object 클래스 다형성 인수로 활용 Object 타입으로 Upcasting되면 반드시 Downcasting을 하게 되어 있다. public clas.. 2024. 1. 29. 추상클래스와 인터페이스 추상클래스와 인터페이스 다형성 보장 부모가 명령을 내리면 자식이 반드시 동작(반응)을 해야한다. 정보 은닉, Override(재정의), Upcasting, 동적 바인딩의 다형성 전제조건 4가지를 필수로 만족해야한다. 반드시 재정의가 되어야 한다. 부모 클래스가 추상적으로 설정하면 무조건 자식 클래스에서 재정의를 해야한다. 재정의를 하면 다형성을 보장한다. 부모 클래스를 추상적으로 만든다. 추상 클래스(불완전한 클래스) 메서드의 구현부가 없는 메서드 반드시 자식이 완전하게 재정의를 통해 해야한다. // 추상클래스(불완전한 클래스) public abstract class Animal{ // 추상 메서드(불완전한 메서드) : 메서드의 구현부가 없다. public abstract void eat(); } pub.. 2024. 1. 29. 다형성 다형성 다형성이란? 다형성 상위클래스가 동일한 메시지로 하위 클래스를 서로 다르게 동작 시키는 객체지향 이론 Upcasting 사용 public class PolyTest { public static void main(String[] args) { // Upcasting으로 객체를 생성 // 상속관계, 재정의(Override), 동적바인딩 // [다형성(message polymorphism)] // 상위클래스가 동일한 메시지로 하위클래스를 서로다르게 동작시키는 객체지향 원리 Animal ani = new Dog(); ani.eat(); //실행시점에서 사용될(호출될)메서드가 결정되는 바인딩(동적바인딩) ani = new Cat(); ani.eat(); // Downcasting ((Cat)ani).nig.. 2024. 1. 29. 객체 형변환 객체 형변환(Object Casting) 부모 자식 간의 형 변환 부모와 자식 간에 형 변환이 된다 부모는 여러 명의 자식을 가리킬 수 있다. 부모를 알면 자식들을 관리 하기 쉽다. Upcasting 자동 형변환 Downcasting 상위 클래스의 타입을 하위 클래스의 타입으로 바꾸는 행위 강제 형변환 업캐스팅이 되어야 다운캐스팅이 가능하다. 부모가 자식 타입으로 형변환 public class OverrideTest { public static void main(String[] args) { // Upcasting : Dog의 소스코드를 주지 않고 Dog의 클래스와 상속 관계인 것만 알면 Animal 부모 클래스로 Dog 자식 클래스를 사용하기 위해서 사용 Animal ani = new Dog(); //.. 2024. 1. 28. 상속 객체 지향 프로그래밍 설계 하기 상속 수평적 구조와 수직적 구조의 설계 방법 수평적 구조로 설계 한다면? → 각 클래스마다 DTO, VO를 만들어야한다. 객체를 설계하다 보면 비슷한 클래스의 경우 중복적인 요소가 발생한다. 객체를 수평적인 구조로 설계하면 단점 코드의 중복이 발생 새로운 요구사항 발생시 반영이 어렵다(유지보수가 어렵다) 확장성이 떨어진다. 수직적 구조로 설계한다면? 수직적 구조 = 계층화 = 상속 = 클래스와 클래스의 관계 설계 부모가 확장(상속)(extends) 시켜서 자식이 부모의 정보를 사용가능 하기 때문에 코드의 중복부분을 최소화 할 수 있다. 새로운 요구사항 발생 시 부모 클래스만 수정하면 되기 때문에 유지 보수가 쉽다. 클래스를 계층화 해서 사용할 때의 장점 클래스를 계층화 하.. 2024. 1. 28. 객체 생성과 static 과의 관계 객체 생성과 static 과의 관계 객체 생성을 못하게 막기 위해서 클래스의 생성자를 private으로 설정할 수 있다. new를 사용하여 객체 생성 불가 자주 사용하는 클래스들은 객체를 생성하지 않고(private으로 선언) 클래스에 직접 접근해서 메서드 사용 하기 위해서 객체 생성을 막는다. public class AllStatic { private AllStatic(){ } public static int hap(int a, int b){ int v=a+b; return v; } public static int max(int a, int b){ return a>b ? a : b; } public static int min(int a, int b){ return a 2024. 1. 28. 이전 1 ··· 14 15 16 17 18 19 다음