목차
자료형
논리형
- boolean 1bit (true 또는 false)
문자형
- char 2byte
정수형
- byte 1byte
- short 2byte
- int 4byte
- long 8byte
실수형
- float 4byte
- *double 8byte
*자바는 기본적으로 실수를 형변환하지 않는다면, double 형을 갖게 된다.
출력형태
- 일반적인 출력 형태
System.out.print();
- "문자열" +변수, 띄어쓰기 포함
System.out.print(" k1= " +k1);
// 출력
k1= 7
- 출력후 엔터(개행 포함)
System.out.println("S");
System.out.println("T");
// 출력
S
T
인스턴스(객체) 생성
일반적인 인스턴스 생성 형태
// 클래스명 객체(참조변수)명 = new 클래스명();
C p = new C();
- 인스턴스만 생성시, 메모리에 할당되지 않는다.
- q=p; 다른 인스턴스지만, 같은 메모리 공간을 참조한다.
객체 생성의 상속
객체 생성시 부모 클래스를 상속받을 경우, 참조 변수의 값은 부모 클래스에 가까운 값이 된다.
class A {
int a = 10;
public static void main(String[] args) {
B b1 = new B();
A b2 = new B(1);
// 참조변수 b2는 부모 클래스 A의 멤버변수(a) 값이다.
System.out.print(b1.a + b2.a);
}
}
class B extends A {
int a = 20;
}
접근지정자(접근제어자)
종류 | 접근 범위 | 클래스 | 패키지 | 상속 | 전체 |
public | 제한 없음 | O | O | O | O |
protected | 동일 패키지와 상속 받은 클래스 | O | O | O | |
default | 동일 패키지 | O | O | ||
private | 동일 클래스 | O |
생성자
생성자 규칙
- 클래스명과 메서드명 동일
- 리턴타입 정의하지 않는다.
- 생성자는 객체 생성시(new 키워드 사용) 호출된다. 예) C p = new C();
- 생성자가 선언될 경우, 생성자의 규칙대로만 객체 생성한다.
생성자 문제 유형의 해설 정리
1. 생성자 호출
- main 함수에서 생성자 호출을 파악한다.
- 생성자는 기본적으로 하나만 호출한다. 따라서 new 키워드로 객체 생성시, 우측에 있는 생성자만 신경쓰면 된다.
2. 생성자 상속 및 명시적 호출(super)
해당 생성자에서 상속여부를 파악한다.
부모의 형태로 자식을 생성할 경우, 자식 클래스의 생성자부터 찾아간다.
이때, 해당 생성자에서 super 키워드로 명시적 호출을 파악한다.
super 키워드 : 부모 생성자의 명시적 호출
super 키워드 없을 시, 인자 없는 부모 생성자를 호출한다.
다형성
메서드를 여러 형태로 표현하는 것이다.
메서드
1. static 메서드
- static은 객체 생성(new 키워드)을 하지 않고 일반 함수처럼 사용 가능하다.
- static 메서드는 상속관계일 때, hiding (하이딩) 관계를 주의해야 한다.
2. 메서드 오버라이딩(Method Overriding)
- 상속관계에서 부모 클래스의 메서드를 재정의한다.
- 추상클래스나 인터페이스 상속시 사용된다.
- 부모 메서드의 이름, 리턴 타입, 매개변수의 개수와 유형이 완전히 동일해야 한다.
[객체 생성] 부모 클래스의 형태로 자식 클래스의 인스턴스를 생성할 때
- 일반적으로 부모 메서드를 호출하지만, 메서드 오버라이딩 할 경우는 자식 메서드를 호출한다.
- 하지만 static 메서드의 경우 오버라이딩이 아니라, 객체 생성 형태를 확인해야 한다.
객체 생성시 가까운 클래스(좌측의 부모 클래스)의 메서드를 호출한다.
class A {
static void f() { System.out.print("1 "); }
void g() { System.out.prin("2 "); }
}
class B extends A {
// static 메서드
static void f() { System.out.print("3 "); }
// 메서드 오버라이딩
void g() { System.out.prin("4 "); }
}
class C {
public static void main(String args[]) {
// 부모 클래스로 자식 클래스의 인스턴스 생성
A a = new B();
// static 메서드로 부모 클래스 형태의 인스턴스로 부모 메서드 호출
a.f();
// 일반적인 메서드 오버라이딩된 형태로 자식 메서드 호출
a.g();
}
}
// 출력
1 4
'정보처리기사' 카테고리의 다른 글
정보처리기사 자바 정리 #01 (0) | 2023.09.20 |
---|---|
정보처리기사 파이썬 정리1 (0) | 2023.09.20 |
서브네팅과 서브넷 계산 (0) | 2023.09.12 |
서브넷 마스크와 문제 유형 (0) | 2023.09.12 |