언어/자바 4

추상클래스/템플릿 메서드, final 예약어

추상클래스는 상속을 위한 클래스이기때문에 만약 메서드를 구현했다고하더라도 인스턴스로 사용할 수 없다. 아래처럼 abstract을 붙인 클래스가 있다면 아래와 같이 new 를 통한 새로운 인스턴스 정의는 할수 없다. 추상 클레스 및 추상 메서드는 다른곳에서 쓸때 해당 메서드가 정의되어 사용해야한다. 만약 그러고 싶지 않다면 Hook 메서드를 만들어서 사용한다. 템플릿 메서드 추상 메서드나 구현된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 메서드이다. final로 선언하여 하위 클래스에서 재정의 할 수 없게 한다. final 예약어 final 변수 : 값이 변경될 수 없는 상수 ex) final static final double PI = 3.14; final 메서드 : 하위 클래스에서 재정의 할 ..

언어/자바 2023.11.11

가상 메서드 원리/메서드 재정의(@Override)

자바의 경우 모든 메서드는 가상 메서드이고 해당 메서드에 대한 address를 가짐 재정의가 안된경우 같은 address를 가리키고 재정의가 된경우 재정의된 메서드주소 address를 가리킨다. 메서드의경우 code영역에 속한다. 위의 코드는 아래 코드를 본후 다시 보면 이해가 쉽다. 기존 부모 클래스 Customer 안의 calcPrice 메서드 public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price; } 자식클래스인 VIPCustomer에서 재정의된 calcPrice 메서드 @Override public int calcPrice(int price) { bonusPoint += price * bonusRatio; ..

언어/자바 2023.11.09

static 변수, 메서드 / 싱글톤패턴

static 변수, 메서드는 데이터 영역에 속함 static 예약어를 사용할때 해당 static 변수나 메서드는 외부에서 클래스로 접근하여 호출가능 여러 인스턴스에서 공용으로 쓰기위해 사용한다. 싱글톤 패턴 프로그램에서 인스턴스가 단 한개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현 할 수 있음 ex) 회사 // Company.java class public class Company { private static Company instance = new Company(); // 유일한 instance Company 인스턴트 private Company() { // private처리로 외부에서 생성자를 생성하지못하게한다. } public static Compan..

언어/자바 2023.11.06

[Java] 클래스, 인스턴스, 힙메모리

class 를 정의하여 instance로 여러개를 생성하여 사용할 경우 Student studentLee = new Student(); Student studentKim = new Student(); 각 instance객체 클래스마다 힙메모리(동적메모리)를 가진다. 이 힙 메모리는 garbage collector 가 주기적으로 사용하지 않는 메모리를 제거한다. System.out.println(studentKim); System.out.println(studentLee); 다음과 같이 각 클래스 인스턴스를 log를 찍어보면 각각의 참조값을 가지고 해당 주소는 각각 인스턴스가 자리잡은 jvm이 준 주소를 확인할수있다.

언어/자바 2023.11.05