오늘 한 일
- Java 언어를 학습하였다
- 블로그 TIL을 작성하였다
- 1일 1커밋을 하였다
느낀 점
내일 응용 프로그래밍 자바 수행 평가가 있기 때문에 이를 준비하기 위해서 Java 언어를 공부해봤는데 Java가 대표적인 객체 지향 언어라 그런가 다른 언어에도 도움되는 기본기를 쌓이는 거 같다 이제까진 수업 시간에 Java를 해도 어차피 내가 안 쓰는 언어라 설렁설렁 들은 감이 있는데 이제부터는 집중해서 들어야겠다
배운 점
Java 객체 지향 특성과 상속, 정적 멤버의 핵심 원칙
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class A {
int m = 2;
static int n = 4;
void method1() {
System.out.println("A instance method");
}
static void method2() {
System.out.println("A static method");
}
}
class B extends A {
int m = 6;
static int n = 8;
void method1() {
System.out.println("B instance method");
}
static void method2() {
System.out.println("B static method");
}
}
public class Main {
public static void main(String[] args) {
A ab = new B();
System.out.println(ab.m); // 출력: 2
System.out.println(ab.n); // 출력: 4
ab.method1(); // 출력: B instance method
ab.method2(); // 출력: A static method
}
}
해당 코드에서 출력 결과가
1
2
3
4
2
4
B instance method
A static method
이런식으로 출력되는 이유는
- 변수
1 2
2 4
인스턴스 변수는 오버라이드되지 않는다 위 코드에서 클래스 B는 A를 상속하지만 변수 m과 n은 오버라이드되지 않기 때문에 A 타입의 참조 변수로 B 객체를 참조할 때 A 클래스의 변수들이 사용된다
- 인스턴스 메서드
1
B instance method
인스턴스 메서드는 오버라이드될 수 있기에 A 타입의 참조 변수가 실제로 B 객체를 참조하고 있을 때 B 클래스의 오버라이드된 메서드가 호출된다
- 정적 메서드
1
A static method
정적 메서드는 오버라이드될 수 없기에 클래스 B에서 method2를 정의하더라도 이것은 A의 method2를 오버라이드하는 것이 아니라 B에는 동일한 이름의 새로운 정적 메서드가 생성된다
내일 계획
내일은 안드로이드 강의를 해야겠다