본문 바로가기

JAVA34

[자바] 오버로딩, 오버라이딩 오버로딩 : 이름은 같지만 매개변수가 다른 메서드를 여러 개 정의하는 것. 단 반환 타입이 다를 때에는 인정 x메서드 시그니처 = 메서드 이름 + 매개변수 타입(순서)즉 오버로딩은 메서드 시그니처를 가지고 판단한다.// 단순히 입력받은 숫자를 출력하는 메서드public class TestMain { public static void main(String[] args) { Test test = new Test(); test.call(1, 3); test.call(1, 3, 4); test.call(1); } static class Test { public void call(int x) { System.out... 2024. 12. 24.
[자바] 상속, 추상클래스, 인터페이스 상속이란?기존 클래스의 속성과 기능을 새로운 클래스에서 재사용할 수 있도록 하는 기능 상속 시 메모리 공간자식 클래스 인스턴스를 생성할 때, 부모 클래스 인스턴스도 함께 생성된다. 이 때 실제로 메모리에 할당되는 객체는 자식 클래스의 인스턴스 하나로 이 인스턴스 안에는 부모 클래스의 멤버(필드와 메서드)가 포함되어 있음.즉 부모에서 자식까지의 모든 메타 정보를 가진 하나의 인스턴스를 생성한다.(물리적으로 하나로 생성된다 할지라도, 다형성 개념을 이해하기 위해서 논리적으로는 분리해서 생성된다고 이해하는 것이 편하다)super 키워드super→ 부모와 자식의 필드명이 같은 경우나 메서드가 오버라이딩 되어있을 때 자식에서 부모의 필드나 메서드를 호출할 수 없음. 이런 상황에서 super 키워드를 사용하면 부모.. 2024. 12. 24.
[자바] 상수와 리터럴 상수 : 값을 변경할 수 없는 변수상수에 넣는 데이터는 숫자, 클래스 같은 데이터가 들어옴이 때 상수가 값을 변경할 수 없다고 해서 상수의 데이터가 변하지 않는다고 착각하지만 참조변수의 주소값이 변하지 않을 뿐 주소가 가리키는 데이터까지 변하지 않는다는 의미가 아님리터럴 : 개발자가 직접 입력한 고정된 값(데이터)으로 리터럴 자체는 변하지 않음변수에 할당이 가능고정 값을 나타내는 표기법보통 인스턴스는 동적이므로 리터럴이 될 수 없지만 불변 클래스는 리터럴이 될 수 있음(값이 변한다면 새로운 객체를 만들게 되므로). 즉 리터럴은 기본형 데이터를 나타내지만 예외적으로 Immutable Class, VO Class역시 리터럴이라고 함int a = 100; // 정수 리터럴 100double b = 10.5; .. 2024. 12. 24.
[자바] static 변수와 메서드 자바에서 static 키워드를 선언하면 메서드 영역에서 특별하게 관리된다. 이는 프로그램 실행에 생성되고 JVM이 종료될 때 까지 유지가 되어 (메서드 영역에 존재하므로 GC에 의해 제거되지 않음) 정적임을 뜻한다.static 변수클래스 변수, 정적 변수, static 변수 : static이 붙은 멤버 변수로 자바 프로그램이 시작될 때 초기화되며 메서드 영역에 딱 1개 생성. 인스턴스와 무관하며 여러 곳에서 공유하는 목적으로 사용된다.↔ 인스턴스 변수 : static이 붙지 않은 멤버 변수로 인스턴스를 생성해야 사용 가능하며(동적) 생성된 인스턴스에 소속. (힙 영역)static 메소드변수와 마찬가지로 메서드에 static 키워드가 붙으면 정적 메서드 또는 클래스 메서드라고 한다. ↔ 인스턴스 메서드 :.. 2024. 12. 24.
[자바] 접근 제어자 접근 제어자 : 외부로부터 속성과 기능을 숨기는 역할private → 모든 외부 호출을 막음default → 같은 패키지 안에서 호출은 허용, package-private 이라고도 함.protected → default와 마찬가지로 같은 패키지 내에서 호출은 허용 + 패키지가 달라도 상속 관계라면 호출 허용public → 모든 외부 호출 허용private → default → protected → public 순으로 접근을 막는다.     접근 제어자 / 범위다른 패키지(상속X)상속 관계같은 패키지같은 클래스 내의 멤버privatexxxodefaultxxooprotectedxooopublicoooopublic class Test { public int publicNumber = 1; prote.. 2024. 12. 24.
[자바] 자바 동작 방식과 구조 자바는 표준 스펙과 구현으로 구분이 가능하다.표준 스펙설계도이자 문서JCP라는 자바 커뮤니티 프로세스를 통해 관리구현표준 스펙에 맞추어 실제 동작하는 자바 프로그램이 개발되어 있음. 즉 어떤 자바든 간에 호환이 가능함Amazon Corretto → AWS에 최적화자바 프로그램의 실행 순서자바 프로그램은 컴파일과 실행 단계를 거침.java의 자바 프로그램 코드를 작성 후 실행자바 컴파일러(javac)가 위 소스 코드를 컴파일.java → .class 파일로 변환변환 이유 → 자바 소스 코드를 바이트 코드로 변환하는데 이는 JVM에서 더 빠르게 실행될 수 있도록 최적화 하기 위함 + 문법 오류 검출자바가 제공하는 java라는 프로그램을 사용하여 hello 프로그램 실행JVM이 실행되면서 기계어로 번역 후 프.. 2024. 12. 24.
[자바] 자바 기초 변수 명명 규칙변수 이름은 숫자로 시작 x, 포함하는 것은 가능공백 X예약어 X영문자, 숫자, 달러($), 밑줄(_) 만 사용 가능관례소문자로 시작하며 여러 단어로 이루어진 변수일 때 낙타 표기법(Camel Case)로 표기클래스 명명 규칙대문자로 시작, 낙타 표기법으로 표기상수 명명 규칙모두 대문자로 사용하며 단어 구분은 밑줄(_)패키지 명명 규칙모두 소문자로 사용자바14에서의 switch기존 switch문public static void main(String[] args) { int grade = 0; int coupon; switch (grade) { case 0: coupon = 1000; break; case 1: coupon = 2000; break; case 2: co.. 2024. 12. 24.