본문 바로가기

객체지향프로그래밍13

40. 무엇이든 담을 수 있는 제네릭(Generic)프로그래밍 제네릭 자료형 정의 - 클래스에서 사용하는 변수의 자료형이 여러 개 일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언 - 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 - 컬렉션 프레임워크에서 많이 사용되고 있음 제네릭 타입을 사용하지 않는 경우의 예 - ThreeDPrinter1.java(재료가 powder인 경우) public class ThreeDPrinter1 { private Powder material; public Powder getMaterial() { return material; } public void setMaterial(Powder material) { this.m.. 2022. 5. 27.
39.Class 클래스 Class 클래스 - 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일이 생성됨 - Class 클래스는 컴파일 된 class 파일을 로드하여 객체를 동적 로드하고, 정보를 가져오는 메서드가 제공됨 - Class.forName("클래스 이름") 메서드로 클래스를 동적으로 로드 함 Class c =Class.forName("java.lang.String"); - 클래스 이름으로 직접 Class 클래스 가져오기 Class c =String.class; - 생성된 인스턴스에서 Class 클래스 가져오기 String s= new String(); Class c = s.getClass(); //Object 메서드 동적로딩 - 컴파일 시에 데이터 타입이 binding 되는 것이 아닌, 실행(runtime).. 2022. 5. 26.
38.String, StringBuilder, StringBuffer 클래스, text block String 클래스 - String 선언하기 String str1 = new String("abc"); String str2 = "abc"; - 힙 메모리에 인스턴스로 생성되는 경우와 상수 폴(constant pool)에 있는 주호를 참조하는 두 가지 방법 - 힙 메모리는 생성될때마다 다른 주소 값을 가지지만, 상수 폴의 문자열은 모두 같은 주소값을 가짐 예제 - StringTest.java public class StringTest { public static void main(String[] args) { String str1= new String("abc"); String str2= new String("abc"); System.out.println(str1 == str2); String str3 .. 2022. 5. 25.
37.Object 클래스의 메서드 활용 equals() 메서드 - 두 인스턴스의 주소 값을 비교하여 true/false를 반환 - 재정의하여 두 인스턴스가 논리적으로 동일함의 여부를 구현함 - 인스턴스가 다르더라도 논리적으로 동일한 경우 true를 반환하도록 재정의할 수 있음 hashCode() 메서드 - hashCode()는 인스턴스의 저장 주소를 반환함 - 힙메모리에 인스턴스가 저장되는 방식이 hash 방식 - hash : 정보를 저장, 검색하는 자료구조 - 자료의 특정 값(키 값)에 대한 저장 위치를 반환해주는 해시 함수를 사용 clone() 메서드 - 객체의 원본을 복제하는데 사용하는 메서드 - 생성과정의 복잡한 과정을 반복하지 않고 복제할 수 있음 - clone() 메서드를 사용하면 객체의 정보(멤버 변수 값 등)가 동일한 또 다른 .. 2022. 5. 25.