캡슐화 캡슐화는 상속과 마찬가지로 자바 객체지향 프로그래밍의 중요 개념 중 하나이다. 먼저 간단하게 정의하자면, 캡슐화란 관련이 있는 필드와 메서드를 하나의 클래스로 묶어 데이터를 외부로부터 보호하는 일이다. 구체적으로 나누자면 첫 째로는 데이터 보호, 두 번째로는 내부 데이터의 불필요한 노출 방지에 그 목적이 있다. 즉, 캡슐화의 가장 큰 장점은 데이터 은닉(data hiding)에 있다고 볼 수 있다. 외부로부터 객체의 필드와 메서드가 함부로 변경 되는 것을 막고, 데이터가 변경 되더라도 다른 객체에 영향을 주지 않도록 할 수 있다. 이는 코드 확장시에 오류를 최소화 하는데 도움이 되며, 당연히 유지보수에도 장점이 된다. 패키지 패키지(Package)는 관련이 있는 클래스와 인터페이스의 묶음을 의미한..
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(); } } // 출력 ..
상속 상속은 객체지향 프로그래밍의 핵심개념 중 하나다. 꼭 자바뿐 아니라, 객체지향 프로그래밍 설계를 지원하는 모든 언어에 적용되는 개념이라고 할 수도 있다. 자바 언어에서 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 문법요소이다. 두 개의 클래스를 상, 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 내부 클래스)를 하위 클래스와 공유하는 것을 의미하기도 한다. 이 경우 두 개의 클래스를 상속관계에 있다고 하며, 하위 클래스는 상위 클래스의 모든 멤버를 상속받게 된다. 따라서 하위 클래스의 멤버 개수는 언제나 상위 클래스의 멤버 개수보다 같거나 많다. 또한 "~클래스로부터 상속받았다"는 표현보다는 "~클래스로부터 확장되었다"가 더 정확한 표현이며, 두 클래스 간 상속 관계를 설..
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..
생성자란 앞서 살펴봤던 클래스의 4가지 구성요소 중 하나로서, 인스턴스가 생성될 때 호출되는 이다. 구체적으로는 Car bmw = new Car(); 와 같이 인스턴스를 생성할 때, 가장 뒤에 쓰인 Car()가 바로 그 생성자이다. 추가로 생성자는 클래스의 구성요소이긴 하나 멤버는 아니라고 언급했었는데, 이 때문에 생성자는 상속되지 않고, 오버 라이딩의 대상이 되지도 않는다. 생성자는 메서드라고 편의상 적어두긴 했으나, 일반적인 메서드와는 크게 두 가지 차이점을 가지는데 생성자의 이름은 반드시 클래스의 이름과 같아야 한다. 생성자는 리턴 타입이 존재하지 않는다. 따라서 void 키워드도 쓰지 않는다. 가 그것이다. 즉, 엄밀하게 말하면 생성자는 메서드가 아니다. 메서드와는 다르다. 메서드와는..! 구체..
필드(field) 필드는 클래스에 포함된 변수를 말한다. 이 변수는 또 세 가지로 나뉘는데, 클래스 변수(cv, class variable) 인스턴스 변수(iv, instance variable) 지역 변수(lv, local variable) 가 그것이다. 세 유형은 클래스 내에서 선언된 위치에 따라 한 번, static 키워드에 따라 또 한 번 나눠지는데, 간단히 예를 들면 다음과 같다. class Example { // => 클래스 영역 int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스 변수(static 변수, 공유변수) void method() { // => 메서드 영역 int localVariable = 0; // 지역 변수({}..
객체지향 프로그래밍(Object Oriented Progamming)은 객체가 무엇인지 아는 것에서 시작한다. 객체를 알기 위해선 객체를 생성하는 도구인 클래스에 대해서도 알아야 하는데, 각각의 개념은 다음과 같다. 객체(Object) - 우리가 인지할 수 있는 모든 것. 사용할 수 있는 실체 클래스(Class) - 객체를 정의한 설계도 또는 틀 클래스는 객체 자체가 아니라 객체를 생성하는 데 사용되는 하나의 틀에 불과하다. 클래스를 통해 생성된 객체를 인스턴스(Instance)라 부른다. 조금 추상적인 이야기라 이해하는데 어려움이 있었지만, 대략 위와 같은 단어에 익숙해지면 되는 듯하다. 객체와 인스턴스는 거의 같은 개념이지만 조금 다르다는 것도 알 수 있었다. 추가로 최초의 클래스를 잘 만들어 두면 ..
첫 제출 과제로 간단한 계산기 만들기가 주어졌다. 숫자 두 개를 입력받아 사칙연산을 하는 계산기를 만드는 과제였는데, 간단한 조건문을 이용해 비교적 쉽게 만들어낼 수 있었다. import java.util.Scanner; public class Calculator { public static void main(String[] args) { System.out.println("===Java Calculator==="); Scanner input = new Scanner(System.in); System.out.print("첫 번째 숫자를 입력합니다: "); double num1 = input.nextDouble(); System.out.print("연산자를 입력합니다: "); String cal = inp..
- Total
- Today
- Yesterday
- Backjoon
- 지지
- spring
- 남미
- 알고리즘
- 동적계획법
- 스트림
- Python
- 파이썬
- 야경
- a6000
- java
- 중남미
- 자바
- RX100M5
- 세계여행
- 기술면접
- 맛집
- 여행
- BOJ
- 면접 준비
- Algorithm
- 유럽
- 칼이사
- 세계일주
- 유럽여행
- 백준
- 세모
- 스프링
- 리스트
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |