BackEnd/자바
-
인터페이스BackEnd/자바 2021. 1. 9. 12:14
class는 인터페이스를 implments 키워드를 통해 상속받을 수 있다. 하지만 인터페이스가 인터페이스를 상속할 땐 class 끼리 상속하는 것과 동일하게 extends 를 사용한다. - 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다. - 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다. - 인터페이스는 객체의 타입으로만 사용된다. - 인터페이스에는 추상 메소드만 존재한다. 자바8부터 default, static 으로 method 구현 가능 - 인터페이스의 상수는 private으로 만들 수 없다 자바 9 부터 private method, private static method 가능 interface 안에서 default 와 sta..
-
자바 기초 (패키지, import , classpath, 접근제어자)BackEnd/자바 2021. 1. 1. 14:57
패키지 서로 관련 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 패키지를 사용해 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스와 함께 계층적 형태로 사용함으로써 다른 그룹에 속한 클래스들과 충돌을 방지하고 관리를 편하게 한다. 도메인명을 거꾸로 하는 방법을 많이 사용한다. tistory.com - > 패키지명 : com.tistory.seung (seung 은 프로젝트명) import java.lang 을 제외한 다른 패키지의 클래스를 이용하고자 할 때 클래스명 앞에 패키지를 명시하여 사용하는데, 이를 import 를 통해 생략할 수 있다. 파일 상단에 import 패키지명을 쓴다. 또 다른 패키지의 static 메서드를 import static 을 통해 사용할 수 있다. (import ..
-
중첩클래스의 쓰임 > 이펙티브 자바 아이템 24BackEnd/자바 2020. 12. 26. 13:25
중첩클래스에는 정적 멤버 클래스, 비정적 멤버 클래스,익명클래스,지역클래스 네가지이다. 첫번째를 제외한 나머지는 내부클래스에 해당한다. 비정적 멤버 클래스의 인스턴스는 바깐 클래스의 인스턴스와 암묵적으로 연결된다. 그래서 비정적 멤버 클래스의 인스턴스 메서드에서 정규화된 this 를 사용해 바깥 인스턴스의 메서드를 호출하거나 바깥 인스턴스의 참조를 가져올 수 있다. 정규화된 this ? 클래스명.this 바깥클래스의 이름을 명시하는 용법 바깥 클래스로의 숨은 외부 참조를 갖는 것은 시간과 공간이 소비되고, GC가 바깥클래스의 인스턴스를 수거하지 못해 메모리 누수가 생길 수 있다. 비정적 멤버 클래스는 바깥 인스턴스 없이는 생성할 수 없다. 드물게 직접 바깥 인스턴스 클래스.new 내부클래스를 호출해 수동..
-
상속 , dynamic dispatchBackEnd/자바 2020. 12. 26. 10:46
※ 상속 상속 : 상위클래스의 변수, 메서드들을 하위 클래스가 물려받는 것 이미 존재하는 클래스를 기반으로 새로운 클래스를 작성하며 코드를 재사용할 수 있고, 같은 메서드라도 각 하위 클래스에서 재정의(Overriding) 해 객체 지향에 중요한 부분인 다형성을 구현한다. extends 키워드를 통해 클래스를 상속할 수 있으며, 복잡성을 줄이고 코드의 간결함을 위해 단일 상속만 가능하다. //single class Animal{ void eat(){System.out.println("eating..."); } } class Dog extends Animal{ void bark(){ System.out.println("barking...");} } //Multi Level class Animal{ void..
-
프록시 패턴BackEnd/자바 2020. 12. 20. 20:05
실제 기능을 수행하는 객체 Real Object 대신 가상의 객체 Proxy Object를 사용해 로직의 흐름을 제어하는 디자인 패턴. 원래 하려던 기능을 수행하며 그외의 부가적인 작업(로깅, 인증, 네트워크 통신 등)을 수행하기에 좋다. 비용이 많이 드는 연산(DB 쿼리, 대용량 텍스트 파일 등)을 실제로 필요한 시점에 수행할 수 있다. 사용자 입장에서는 프록시 객체나 실제 객체나 사용법은 유사하므로 사용성이 좋다. 만약 책을 대여하고 반납하는 메서드에서 다른 부가 작업을 수행하고 싶다고 하면, BookService 인터페이스를 이용해 정적인 방식, 동적인 방식으로 프록시 클래스를 생성할 수 있다. public class Book { private String title; public String ge..
-
JVM, JRE, JDK, 메모리BackEnd/자바 2020. 12. 14. 21:34
일반 프로그램은 운영체제에서 바로 실행되는 반면, 자바 프로그램은 JVM 을 거쳐 실행된다. JVM 이란 (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드를 인터프리터와 JIT 컴파일러를 이용해 OS 에 특화된 코드로 변환한다. 바이트 코드를 실행하는 표준의 의미 JAVA SE 바이트 코드를 실행하는 표준을 구현한 구현체도 JVM이라는 용어를 사용한다. Oracle, Azul, Amazon-corretto, AdoptOpenJDK 등 벤더에 따라 구현이 다르다. 바이트 코드 자바 컴파일을 하면 .class 파일이 나오고 .class 안에 있는 코드가 바이트 코드다. 이 바이트코드는 실제 실행될 때 다시 한번 기계가 읽을 수 있는 형태(native code)로 interpret..
-
자바 SOLID 원칙BackEnd/자바 2020. 12. 12. 16:05
S : Single Responsibility Principle 단일 책임 원칙 - 단 하나의 책임 , 책임이 많아지면 클래스 내부 함수끼리 강한 결합이 발생할 가능성이 많고, 이는 유지보수 비용의 증가로 이어진다. O : Open-Closed Principle - 코드의 변경에는 폐쇄적, 수정과 확장에는 개방적 , 다형성 L : 리스코프 치환원칙 - 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다. I : Interface Segregation Principle 인터페이스 분리원칙 - 하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 낫다. D : Dependency Inversion Principle 의존 역전 원칙 - 의존관계를 맺을 때, 변화하기 쉬운 것보단 변화가 어..