추상클래스 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스 - 미완성 설계도 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없음 class 앞에 "abstract" 예약어를 사용하여 상속을 통해서 구현해야한다는 것을 알려주고 선언부만 작성하는 추상메서드를 선언할 수 있다. abstract class 클래스이름 { ... public abstract void 메서드이름(); } 인터페이스 추상클래스 - 미완성 설계도 인터페이스 - 기본 설계도 인터페이스도 추상클래스처럼 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 클래스와 다르게 다중상속(구현)이 가능함. interface 인터페이스이름 { public static final 상수이름 = 값; public..
오버로딩(Overloading) 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 존재해도 매개변수의 개수 또는 타입이 다르고 리턴 타입이 달라질 수 있는 함수를 오버로딩 함수라고 한다. 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없다는 것이다. // 옳은 예 class MethodOverloading { public int getSum(int i, int j) { return i + j; } public int getSum(int i, int j, int k) { return i + j + k; } // 틀린 예 class MethodOverloadingFail { public int getSum(int ..
서브 클래스의 객체는 - 슈퍼 클래스의 멤버를 모두 가지고 있음 - 슈퍼 클래스의 객체로 취급할 수 있음 업캐스팅 서브 클래스 객체를 슈퍼 클래스 타입으로 변환 class Person { … } class Student extends Person { … } Student s = new Student(); Person p = s; // 업캐스팅, 자동타입변환 업캐스팅된 레퍼런스는 객체 내의 슈퍼 클래스 멤버만 접근할 수 있음 다운캐스팅 슈퍼 클래스 객체를 서브 클래스 타입으로 변환 개발자의 명시적 타입 변환 필요 class Person { … } class Student extends Person { … } ... Person p = new Student("이재문"); // 업캐스팅 … Student s ..
상속 부모 클래스에 만들어진 필드, 메소드를 자식 클래스가 물려받음 동일한 특성을 재정의할 필요가 없어 자식클래스가 간결해짐 상속 선언 • 부모 클래스 : 슈퍼 클래스(super class) • 자식 클래스 : 서브 클래스(sub class) • extends 키워드 사용 public class Person { ... } public class Student extends Person { // Person을 상속받는 클래스 Student 선언 ... } public class StudentWorker extends Student { // Student를 상속받는 StudentWorker 선언 ... } Student 클래스는 자신과 Person 클래스의 protected , public, default,..
Static static - 프로그램 실행 이전에 - 작성된 코드 컴파일 시 결정 dinamic - 프로그램 실행 이후에 - 메모리에 올라간 후 동작 후에 결정(로딩) 실시간 데이터 영역 - JVM이 프로그램을 수행하기 위해 OS로 부터 할당 받는 메모리 영역 여기서 우리가 작성한 코드의 데이터들은 jvm, heap, method area에 들어가게 된다. stack에는 지역 변수 heap에는 동적 할당으로 만들어진 인스턴스 method area에는 바이트 코드로 전환된 텍스트 코드 (프로그램을 실행하기 위해선 전체 코드에 대한 바이트 코드가 메모리 공간 안에 존재해야 한다) 필드, static 변수 등이 들어간다. 프로그램이 시작되는 순간 메모리에 다 올라감 - 객체가 만들어지지 않아도 존재하는 정적으..
long term schesuling - job scheduler - 프로세스가 시스템에 들어갈지 말지 결정 medium term scheduler - swaper - disk에 존재하는 어떤 프로세스를 메인 메모리에 올릴 것인지 결정 short term scheduler - cpu scheduler - 어떤 프로세스가 cpu를 사용하여 실행될 것인지 결정 i/o scheduling - 어떤 프로세스가 i/o request에 대해 pending 될 것인지 결정 short term scheduler 단계에서 실행되는 스케쥴링이 흔히 말하는 CPU Scheduling이다. 밑의 내용은 CPU Scheduling을 설명한 것이다. CPU Scheduling에는 어떻게 프로세스 스위치 하냐에 따라 다양한 방식이..
접근 지정자는 클래스나 일부 멤버를 공개하여 다른 클래스에서 접근하도록 허용합니다. 객체 지향 언어의 캡슐화 정책은 클래스의 멤버를 보호하기 위함인데 접근 지정자를 구현하여 해결할 수 있었습니다. 접근 지정자는 필드와 메소드를 허용하는 범위에 따라 밑의 네가지로 구분할 수 있습니다. public 멤버 - 패키지에 관계 없이 모든 클래스에게 접근 허용 private 멤버 - 동일 클래스 내에만 접근 허용 protected 멤버 - 같은 패키지 내의 다른 모든 클래스에게 접근 허용 - 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능 defalut 멤버 - 같은 패키지 내의 다른 클래스에게 접근 허용 - 따로 접근 지정자를 선언하지 않으면 defalut 멤버로 간주
this는 클래스 밖에서 들어온 다른 인자와 클래스 멤버 변수의 이름이 같을 때 클래스 내의 멤버 변수를 지정할 수 있도록 하는 지시자입니다. 자바의 클래스에서 this는 다음과 같이 사용합니다. public class Circle { int radius; public Circle() { this.radius = 1; } public Circle(int radius) { // 파라미터와 멤버 변수의 이름이 같음 this.radius = radius; } double getArea() { return 3.14*this.radius*this.radius; } ... } C에선 this-> 같이 포인터 지정자로 사용했지만 자바에선 this.멤버만 사용합니다. 자바에서 this는 생성자 안에서도 독특한 역할을 ..