분류 전체보기(89)
-
Clone (); 깊은 복사 ,얇은 복사
"어떤 객체가 있을때 내가 그 객체와 똑같은 것이 필요할때 사용한다" 구현방법 인터페이스 Cloneable 구현 해야 한다 . 실제 Cloneable 클래스가 면 내용이 비어있지만 여기서 의미하는 것은 복제가능한지 아닌지 여부만이다 접근패키지 ( clone(); 함수는 protected로 되어있어 같은 패키지 혹은 상속 에서만 사용이 가능하다) 그래서 구현시 오버라이딩하여 public으로 바꿔준 후 구현 가능하다. package main; class Student implements Cloneable {//복제 가능한지 여부 String name; Student(String name){ this.name = name; } //상속을 받아서 리턴을 할때는 오브젝트 클레스에 clone을 호출하면된다 . pu..
2022.12.03 -
Composition(조합)
-포함(Composite)이란? -클래스의 멤버로 참조변수를 선언하는 것 ex)일반 클래스 Class Circle{ int x;//원점의 x좌표 int y;//원점의 y좌표 int r;//반지름 (radius) } ex)조합 예시 Class Point{ int x; int y; } Class Circle{ Point c = new Pont (); int r;// 반지름 (radius) } point class를 circle를 포함한다. -작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다. Class Car { Engine e = new Engine();//엔진 Door[] d = new Door[4];//문, 문의 개수를 넷으로 가정하고 배열로 처리했다. } 클래스 간의 관계 결정하기 상속..
2022.12.03 -
Weak Reference & Soft reference
자바의 Garbage Collector 는 더이상 참조되고 있지 않는 객체를 자도응로 수거하여 프로그래머가 직접 메모리를 관리하지 않아도 되도록 해준다, 하지만 모든 경우에 대해 gc가 깨끗하게 메모리를 정리해주지는 않는다, 때로는 참조가 계속 남아 있는 경우가 있을 수 있고 이런 경우에 객체는 수거되지 않고 memory leak으로 이어질 수 있다, 이와 같이 참조를 부주의하게 사용하여 발생할 수 있는 memory leak 현성을 막기외해서는 객체에 대한 참조를 유연하게 다루어 필요하지 않은 객체들이 수거 될 수 있도록 해야 한다. JAVA의 참조 유형에는 4가지가 있다, 참조유형에 따라 GC실행 대상여부와, 시점이 달라진다. Reachability # Garbage collector는 referenc..
2022.12.03 -
Static(2) 이란?
Static을 사용한다는 것은 메모리에 한번 할당되고 프로그램이 종료될 때 해제된다는 것을 의미합니다. 메모리 영역과 관련지어서 설명을 해보겠습니다. 사진출처: 망나니개발자님 블로그 먼저 JVM구조에서 메모리 영역을 보면 Static영역과 Heap영역, Stack영역이 있습니다. 여기서 Static영역과 Heap영역을 따로 빼서 아래 사진으로 살펴보겠습니다. 우리가 만드는 Class들은 Static영역에 생성됩니다. 이 클래스들을 new 연산을 통해 객체를 만들어서 사용하는데 생성된 객체는 Heap영역으로 들어가죠. Heap영역의 메모리는 Garbage Collector(GC)에 의해서 정리를 받습니다. 하지만 Static 키워드를 통해서 Static영역에 할당된 메모리는 모든 객체들의 공유할 수 있다는..
2022.11.27 -
Static 이란?
Static은 객체를 생성하지 않아도 메소드를 호출 할 수 있는 메소드이다. Static 메소드는 클래스 변수만 사용할 수 있다는 단점이 있다. Static이 아닌 변수 이름은 static context에서 참조 x 문제 해결 방법 : 1. static 메소드에 static 을 없애고 객체 생성후 호출하기 2. 변수에 static 붙히기 ( 인스턴스 변수가 클래스 변수가 된다 , 그럴경우 모든 객체에서 하나의 값을 바라보기 때문에 문제가 발생할 수 있다.) Static 블록 어떤 클래스의 객체가 생성 되면서 딱 한번만 불려야 하는 코드가 있다 . " 한번만 호출 되어야 하는 코드" Static 블록 사용하여 구현 가능하다. 특징 1. 객체가 생성되기 전에 한번만 호출되고 그 이후에는 호출이 안된다 . 2..
2022.11.27 -
Pass by reference VS Pass by value
Pass by Value => 값을 전달한다 (값만 전달한다) "원래값"은 놔두고 ,전달 되는 값이 진짜 인 것 처럼 보이게 한다 Pass by reference=> "메소드의 매개변수로 참조 자료형을 넘길 경우에는 메소드안에서 객체의 상태를 변경한 결과가 영향을 받는다" -모든 기본 자료형은 Pass by vlaue 이다 -참조자료형은 값이 아닌 참조가 전달되는 Pass by Reference 기본형 매개 변수: 변수의 값을 읽기만 할수있따 (read only) 참조형 매개 변수: 변수의 값을 읽기도 하고 변경도 할 수 있다(read & write) 기본형 매개변수 package test16; public class Date { int x; } class PassbyValue{ public static..
2022.11.27