전체 글(209)
-
다형성1
◎ 다형성 -> 한 객체가 여러 타입의 객체로 취급될 수 있는 성질을 의미한다. -> 보통 하나의 객체는 하나의 타입으로 고정되어 있지만 다형성을 사용하면 하나의 객체가 다른 타입으로도 사용할 수 있다. -> 예제 public class Parent { public void parentMethod(){ System.out.println("Parent.parentMethod"); } } public class Child extends Parent { public void childMethod(){ System.out.println("Child.childMethod"); } } -> Parent 클래스와 이 클래스를 상속받는 Child 클래스를 이용한 코드다. -> 먼저 Parent 타입으로 인스턴스를 생성..
2024.02.09 -
상속
◎ 상속 -> 상속의 필요성에 대해 알아보기 위해 먼저 상속 관계 없이 코드를 작성한다. package extends1.ex1; public class ElectricCar { public void move(){ System.out.println("차를 이동합니다."); } public void charge(){ System.out.println("충전합니다."); } } package extends1.ex1; public class GasCar { public void move(){ System.out.println("차를 이동합니다."); } public void fillUp(){ System.out.println("주유합니다."); } } package extends1.ex1; public clas..
2024.02.08 -
final
◎ final -> 변수에 final 키워드를 붙이면 값을 더 이상 변경할 수 없다. public class FinalLocalMain { public static void main(String[] args) { // final 지역 변수 final int data1; data1 = 10; // 최초 한 번만 할당 가능 // data1 = 20; // 컴파일 오류 // final 지역 변수2 final int data2 = 10; // data2 = 20; // 컴파일 오류 method(10); // 해당 파라미터 값을 바꿀 수 없음 } // final 매개변수 static void method(final int parameter) { // parameter = 30; // 변경 불가 } } -> 지역변..
2024.02.07 -
자바 메모리 구조 & static
◎ 자바의 메모리 구조 -> 자바 메모리 구조는 메서드 영역, 스택 영역, 힙 영역으로 나눌 수 있다. -> 메서드 영역 : 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 해당 영역의 데이터는 프로그램의 모든 영역에서 공유한다. - 클래스 정보 : 클래스의 실행 코드(바이트 코드), 필드, 메서드, 생성자 등 모든 실행 코드가 존재한다. - static 영역 : static 변수를 보관하는 영역이다. - 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. -> 스택 영역 : 자바 실행 시 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산결과, 메서드 호출 정보 등을 포함한다. - 스택 프레임 : 스택 영역에 쌓이는 것이 하나의 스택 프레임이다. 메서드를 호출할 때 마다..
2024.02.06 -
접근 제어자
◎ 접근 제어자 -> 자바는 public, private, protected, default라는 접근 제어자를 제공한다. -> 접근 제어자를 통해 해당 클래스 외부에서 특정 필드나 메서드를 접근하는 것을 허용하거나 제한할 수 있다. -> 예제 - 스피커 클래스를 통해 스피커의 음량을 조절하는 기능을 구현한다. - 스피커의 음량은 100을 넘을 수 없다. package access; public class Speaker { int volume; // 생성자로 volume 초기화 public Speaker(int volume) { this.volume = volume; } // 볼륨 증가 메서드 void volumeUp(){ if (volume >= 100) { System.out.println("최대 음량..
2024.02.05 -
생성자
◎ 생성자 -> 객체를 생성하는 시점에 어떤 작업을 수행하기 위해 사용한다. public class MemberInit { String name; int age; int grade; } public class MethodInitMain1 { public static void main(String[] args) { MemberInit member1 = new MemberInit(); member1.name = "user1"; member1.age = 15; member1.grade = 90; MemberInit member2 = new MemberInit(); member2.name = "user2"; member2.age = 16; member2.grade = 80; MemberInit[] members..
2024.02.01