Object 클래스는 자바의 클래스 상속 계통도에서 최상위에 위치한 클래스이다. 즉, 자바의 모든 클래스는 Object클래스로부터 확장된다. 자바 컴파일러는 컴파일링 과정에서 아무런 상속을 받지 않는 클래스에 자동으로 extends Object를 추가하여 Object 클래스를 상속받도록 한다. class ParentEx { // 컴파일러가 "extends Object" 자동 추가 } class ChildEx extends ParentEx { } ChildEx는 ParentEx를 상속받고 있지만, ParentEx는 아무것도 상속받고 있지 않으므로 컴파일러가 extends Object를 자동으로 추가해 준다. 바꿔 말하면, 모든 클래스는 Object 클래스의 멤버들을 자동으로 상속받아 사용할 수 있다는 뜻이..
예전 글에서 this() 메서드와 this 키워드에 관해서 살펴봤다. https://gnidinger-coding.tistory.com/11 [Java]this() vs. this this() this() 메서드는 클래스 안에서 생성자를 상호 호출할 때 사용한다. 조금 더 풀어서 쓰자면, 생성자 안에서 다른 생성자를 호출할 때 사용되는 것이 this() 메서드이다. this() 메서드를 사용하 gnidinger-coding.tistory.com 요약하면 this는 자신의 객체, this()는 자신의 생성자를 호출하는 데 사용되었다. super와 super()도 이와 비슷하게 사용된다. 다만 차이점은 super는 상위 클래스의 객체, super()는 상위 클래스의 생성자를 호출하는 데 사용된다는 점이다. ..
메서드 오버라이딩은 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것을 말한다. Override 자체가 덮어쓰다는 뜻이니 기능을 유추해볼 수 있겠다. 간단한 예를 들면 다음과 같다. class Vehicle { void run() { System.out.println("Vehicle is running"); } } public class Bike extends Vehicle { // Vehicle 클래스 상속 void run() { System.out.println("Bike is running"); // 메서드 오버라이딩 } public static void main(String[] args) { Bike bike = new Bike(); bike.run(); } } // 출력 ..
상속 상속은 객체지향 프로그래밍의 핵심개념 중 하나다. 꼭 자바뿐 아니라, 객체지향 프로그래밍 설계를 지원하는 모든 언어에 적용되는 개념이라고 할 수도 있다. 자바 언어에서 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 문법요소이다. 두 개의 클래스를 상, 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 내부 클래스)를 하위 클래스와 공유하는 것을 의미하기도 한다. 이 경우 두 개의 클래스를 상속관계에 있다고 하며, 하위 클래스는 상위 클래스의 모든 멤버를 상속받게 된다. 따라서 하위 클래스의 멤버 개수는 언제나 상위 클래스의 멤버 개수보다 같거나 많다. 또한 "~클래스로부터 상속받았다"는 표현보다는 "~클래스로부터 확장되었다"가 더 정확한 표현이며, 두 클래스 간 상속 관계를 설..
내부 클래스 내부 클래스(Inner Class)는 클래스의 멤버 중 하나로서, 클래스 내에 선언된 클래스이다. 내부 클래스는 객체지향의 핵심 원칙인 캡슐화(encapsulation)를 달성하는 데 유용하며, 코드의 복잡성을 효과적으로 줄일 수 있다. 내부 클래스는 클래스 영역에 선언된 변수와 마찬가지로 세 가지 종류로 나뉘는데, 변수와 비교해 예를 들면 다음과 같다. class Example { // => 클래스 영역 int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스 변수(static 변수, 공유변수) void method() { // => 메서드 영역 int localVariable = 0; // 지역 변수({}블록 안에서만 유효) }..
this() this() 메서드는 클래스 안에서 생성자를 상호 호출할 때 사용한다. 조금 더 풀어서 쓰자면, 생성자 안에서 다른 생성자를 호출할 때 사용되는 것이 this() 메서드이다. this() 메서드를 사용하기 위해선 제한조건이 두 개가 있는데, this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다. this() 메서드는 반드시 생성자의 첫 줄에 위치해야 한다. 가 그것이다. 제한조건이 구체적으로 무엇을 의미하는지는 아래 코드를 보자. public class Test { public static void main(String[] args) { Example example = new Example(); Example example2 = new Example(5); } } class Exa..
기본 생성자 기본 생성자는 단순하게 말해 매개변수가 없는 생성자를 뜻한다. DefaultConst(){} // 예시) DefaultConst 클래스의 기본 생성자 사실 모든 클래스에는 하나 이상의 생성자가 반드시 존재해야 한다. 지금까지 생성자 없이도 클래스로부터 인스턴스를 만들 수 있었던 이유는 클래스 내에 생성자가 없는 경우 자바 컴파일러가 자동으로 기본 생성자를 추가해주기 때문이다. 따라서 class DefaultExample { DefaultExample(){} // 기본 생성자 System.out.println("기본 생성자"); } 이 클래스와 class DefaultExample { System.out.println("기본 생성자"); } 이 클래스는 동일하게 작동하게 된다. 매개변수가 있는..
생성자란 앞서 살펴봤던 클래스의 4가지 구성요소 중 하나로서, 인스턴스가 생성될 때 호출되는 이다. 구체적으로는 Car bmw = new Car(); 와 같이 인스턴스를 생성할 때, 가장 뒤에 쓰인 Car()가 바로 그 생성자이다. 추가로 생성자는 클래스의 구성요소이긴 하나 멤버는 아니라고 언급했었는데, 이 때문에 생성자는 상속되지 않고, 오버 라이딩의 대상이 되지도 않는다. 생성자는 메서드라고 편의상 적어두긴 했으나, 일반적인 메서드와는 크게 두 가지 차이점을 가지는데 생성자의 이름은 반드시 클래스의 이름과 같아야 한다. 생성자는 리턴 타입이 존재하지 않는다. 따라서 void 키워드도 쓰지 않는다. 가 그것이다. 즉, 엄밀하게 말하면 생성자는 메서드가 아니다. 메서드와는 다르다. 메서드와는..! 구체..
메서드(Method) 메서드는 클래스 영역에 선언된 함수이다. 더 정확하게는 "특정 작업을 수행하는 명령문들의 집합"이며, 클래스의 기능에 해당한다. 메서드는 다음과 같이 선언한다. public static int add(int x, int y) { // 메서드 시그니처 int result = x + y; // 메서드 바디 return result; } 뜯어보자면 메서드 시그니처에 해당하는 부분에는 메서드에 대한 정보를, 메서드 바디에 해당하는 부분에는 해당 메서드가 호출될 시 수행하는 작업에 대한 정보를 담고 있다. 계속 보자면, 위 메서드는 이름이 add이며, int 타입 두 개의 값(x, y)을 매개변수로 입력받아 더해주는 메서드이다. 메서드 이름 add 앞의 int는 이 메서드의 반환 타입을 말하..
필드(field) 필드는 클래스에 포함된 변수를 말한다. 이 변수는 또 세 가지로 나뉘는데, 클래스 변수(cv, class variable) 인스턴스 변수(iv, instance variable) 지역 변수(lv, local variable) 가 그것이다. 세 유형은 클래스 내에서 선언된 위치에 따라 한 번, static 키워드에 따라 또 한 번 나눠지는데, 간단히 예를 들면 다음과 같다. class Example { // => 클래스 영역 int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스 변수(static 변수, 공유변수) void method() { // => 메서드 영역 int localVariable = 0; // 지역 변수({}..
- Total
- Today
- Yesterday
- 스트림
- 자바
- Backjoon
- 유럽
- 여행
- 동적계획법
- 면접 준비
- 세계일주
- 백준
- 맛집
- 알고리즘
- 지지
- RX100M5
- spring
- 세모
- 세계여행
- Algorithm
- java
- 야경
- 리스트
- 스프링
- 파이썬
- 중남미
- 유럽여행
- 기술면접
- Python
- BOJ
- 칼이사
- a6000
- 남미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |