예전 글에서 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; // 지역 변수({}..
객체의 생성 지난 객체와 클래스 글에서 new 키워드를 이용해 객체를 생성하는 법을 확인했다. https://gnidinger.tistory.com/381 [Java]클래스(Class)와 객체(Object) 객체지향 프로그래밍(Object Oriented Progamming)은 객체가 무엇인지 아는 것에서 시작한다. 객체를 알기 위해선 객체를 생성하는 도구인 클래스에 대해서도 알아야 하는데, 각각의 개념은 다음과 같 gnidinger.tistory.com class CarTest { public static void main(String[] args) { Car bmw = new Car(); // Car 클래스로 만들어진 bmw 인스턴스 Car tesla = new Car(); // Car 클래스로 만들..
- Total
- Today
- Yesterday
- 스프링
- Python
- 자바
- 동적계획법
- spring
- BOJ
- java
- 지지
- 유럽여행
- 세모
- 야경
- 파이썬
- 중남미
- 세계여행
- 백준
- 세계일주
- 칼이사
- a6000
- Backjoon
- 스트림
- 남미
- 면접 준비
- 유럽
- 알고리즘
- 맛집
- Algorithm
- 여행
- 기술면접
- RX100M5
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |