본문 바로가기

전체 글81

[JAVA] 값 복사하기 : object클래스의 clone() 메서드 object클래스의 clone() 메서드 정의object 클래스에 정의된 clone() 메서드자신을 복사하여 새로운 인스턴스를 생성함 특징단순히 인스턴스의 값만 복사함기본 타입 변수의 경우에는, 값 자체를 복사하기 떄문에복사한 객체는 별도의 메모리를 가짐(깊은 복사)참조타입의 변수(참조변수)를 가지는 클래스를 복사하는 경우에는객체의 주소가 복사되기 때문에완전한 복사가 이루어지지 않음(얕은 복사) object클래스의 clone()protected native Object clone() throws CloneNotSupportedException; 1. 접근 제한자가 protected동일한 패키지나 상속 관계가 아니므로, clone() 호출이 불가능이.. 2024. 4. 24.
[JAVA] 깊은 복사, 얕은 복사 깊은 복사정의실제 값을 새로운 메모리 공간에 복사복사된 객체는 완전히 독립적인 메모리를 차지 특징실제 값을 복사새로운 인스턴스를 생성하기 때문에, 복사된 객체는 다른 위치를 가리킴 장점객체 자체의 값를 복사하기 때문에 새로운 객체로 다형성을 부여하거나, 재정의 할 수 있음 단점모든 인스턴스의 값을 가지고 오기 때문에 얕은 복사에 비해 느림   얕은 복사정의최소한의 복사객체의 주소값을 복사하기기 때문에, 복사된 객체는 같은 위치를 가리킴따라서 참조하고 있는 실제값이 같음값을 복사하는 것이 아니라, 인스턴스가 생성되지 않음 특징참조 타입(reference)을 복사하는 경우에 얕은 복사가 일어남복사하려는 원본 객체에 대해서 새로운 .. 2024. 4. 24.
[JAVA] 익명 클래스(익명 객체) 익명 클래스(익명객체)정의내부 클래스의 한 종류딱 한 번만 인스턴스를 생성하여 사용하는 객체즉, 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체일시적으로 사용된다는 것은, 재사용되지 않는다는 것일회용으로 사용하므로 이름이 필요 없어서 '익명 클래스'라고 함  익명클래스를 사용하는 목적 1. 프로그램 내에서 일시적으로 1번만 사용되어야 하는 객체의 경우UI 이벤트 처리 2. 재사용성이 없고, 확장성을 활용하는 것이 유지보수에 불리할 때재사용성이 없어서 매번 클래스를 생성해야 하는 비용이 더 많을때부모 클래스를 상속 받는 자식 클래스를 생성하지 않고도 단일한 객체를 만들어서 부모 클래스에 정의된 메서드의 행위를 추가할 수 있음  특징클래스 선언과.. 2024. 4. 23.
[JAVA] 중첩 클래스의 종류, 특징 중첩 클래스(Nested Class)개념하나의 클래스 내에 선언된 또 다른 클래스즉, 한 클래스 내에서 다른 클래스를 정의하여 사용외부 클래스의 멤버로써 중첩 클래스를 사용함 중첩 클래스를 사용하는 이유하나의 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하여 사용하는 것이 좋지만특정 1개의 클래스와 관계를 맺는 경우에는, 관계를 맺은 클래스 내부에 선언하는 것이 좋음외부 클래스와는 서로 밀접한 관계가 있는 경우에2개의 클래스를 묶어서 한번에 관리하여 캡슐화를 증가 시키고, 유지보수에 도움을 줌 장점중첩 클래스를 사용하면, 두 클래스의 멤버들끼리 서로 쉽게 접근할 수 있음불필요한 관계 클래스를 내부에 감춰서, 코드의 복잡성을 줄일 수 있음  중첩 클래스의 4가지 종류class OuterCla.. 2024. 4. 23.
[JAVA] 상속과 인터페이스, 추상클래스와 인터페이스의 차이 상속와 인터페이스의 차이점 상속 인터페이스 extends 키워드 사용 implements 키워드 사용 멤벼변수, 메서드 상수, 추상메서드(미완성 메서드) public static final int num; - 상수 public abstract void method(); - 추상메서드 public static final public abstract (생략 가능, 컴파일 시에 추가) 단일 상속 (하위 클래스는 상위 클래스 1개만 상속 가능) 다중 구현이 가능 (하위 클래스가 여러 인터페이스를 구현할 수 있음) 추상메서드를 반드시 오버라이딩 하여 구현 인터페이스끼리 상속이 가능 Cat extends Animal Cat implements Animal Cat implements Animal, Pet (다중 구현.. 2024. 4. 23.
[JAVA] 추상 클래스, 추상 메서드, 추상클래스와 인터페이스 차이점 abstract 지정자[정의]1. 기능은 없고2. 선언만 되어 있음[용도]1. 클래스 : 추상 클래스로 사용2. 메서드 : 추상 메서드로 사용    추상 메서드정의public abstract void run(); -- 메서드 선언부구현이 되지 않은 메서드즉, 선언부만 있고, 구현부 블록 { } 이 없는 메서드 [ 구현 메서드 ]- 구현된 메서드 - 즉, 구현부 블록 { } 이 있는 메서드public void run() { } ---- { } 이 있는 메서드​      추상 클래스정의abstract class Student { abstract void run(); // 추상메서드}클래스 선언 시에 abstract로 지정된 클래스하나 이상.. 2024. 4. 22.