CS/Java
-
JAVA - 인터페이스와 추상클래스CS/Java 2021. 2. 18. 20:13
인터페이스와 추상클래스 공통점 선언만 있고 구현 내용이 없는 클래스이다. 안터페이스, 추상클래스만 가지고 새로운 인스턴스를 생성할 수 없다. 상속받아 구현한 자식 클래스 만이 객체를 생성할 수 있다. 인터페이스 implements로 상속받아 구현한다. 모든 클래스에 대해 상속받은 특정 메소드를 반드시 정의해야 한다. 다중상속이 가능하며 일반 변수를 가질 수 없다. 목적: 구현 객체가 같은 동작을 한다는 것을 보장할 수 있어 일관성 있는 프로그램 개발이 가능하다. 추상클래스 extends로 상속받아 구현한다. 추상 메소드가 하나라도 존재하는 클래스를 말한다. 상속받은 추상 메소드는 정의해야 하지만 일반 메소드는 정의하지 않아도 된다. 다중상속이 불가능하며 일반 메소드, 변수 등을 가질 수 있다. 목적: 상..
-
JAVA - GCCS/Java 2021. 2. 18. 19:52
GC GC 프로그램이 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 해제하는 기능이다. JVM의 Heap영역을 관리한다. 장점 동적으로 할당한 메모리 영역의 전체를 완벽하기 관리할 필요가 없어진다. 다음과 같은 버그를 줄이거나 완전히 막을 수 있다. 유효하지 않은 포인터 접근: 이미 해제된 메모리에 접근하는 버그. 이중 해제: 이미 해제된 메모리를 다시 해제하는 버그. 메모리 누수: 더는 필요하지 않은 메모리가 해제되지 않고 남아있는 버그. 단점 어떤 메모리를 해제할지 결정하는데 비용이 발생한다. GC가 일어나는 타이밍이나 점유 시간을 예측하기 어렵다. 그러므로 프로그램이 예측 불가능하게 일시적으로 정지할 수 있으므로 실시간 시스템에는 적합하지 않다. GC의 종류 Minor GC JVM Heap..
-
JAVA - JVMCS/Java 2021. 2. 17. 20:15
JVM JVM(Java virtual machine) 자바 소스코드로 부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다. 바이너리 코드를 읽고, 검증하고 실행하며 실행 환경의 규격을 제공한다. 구조 Class Loader 자바 파일(.java)이 생성되면 자바 컴파일러가(javac) 컴파일하여 바이트코드(.class)로 변환해 준다. 이때 이러한 class파일들을 모아서 JVM이 OS로부터 할당받은 메모리 영역인 Runtime data area로 적재하는 역할을 한다. Execution Engine class loader에 의해 메모리에 적재된 클래스(바이트코드)들을 기계어로 변경해 명령어 단위로 실행한다. Garbage Collctor Heap 메모리 영역에 생성된 객체들 중에 참조되..
-
JAVA - 접근 제어자CS/Java 2021. 2. 17. 19:40
접근 제어자 private private이 붙은 변수, 메소드는 해당 클래스 에서만 접근이 가능하다. default 접근 제어자를 별도로 설정하지 않는다면 해당 패키지 내에서만 접근이 가능하다. protected protected가 붙은 변수, 메소드는 해당 패키지 내 또는 패키지 내의 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다. public public이 붙은 변수, 메소드는 어떤 클래스에서라도 접근이 가능하다. reference velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#java wikidocs.net/232
-
JAVA - 객체지향CS/Java 2021. 2. 17. 19:36
객체지향 OOP(Object Oriented Programming) - 객체지향 프로그래밍 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 장점: 코드 재사용이 용이하고, 유지보수가 쉽다. 클래스 단위로 모듈화하여 대형 프로젝트에 적합하다. 단점: 처리속도가 상대적으로 느리고, 객체가 많으면 용량이 커질 수 있다. 설계시 많은 시간과 노력이 필요하다. 객체지향 VS 절차지향 절차지향 프로그래밍) 순차적인 처리가 중요하며 컴퓨터 작업 처리 방식과 비슷하여 속도가 빠르다. 데이터를 중심으로 함수를 구현한다. 객체지향 프로그래밍) 필요한 객체의 종류와 속성이 중요하며 메소드를 통해서만 객체에 접근할 수 있어 속도가..