본문 바로가기

Language/Java7

[Java] 객체 지향 4대 특징-3 (추상화) 추상화 좋은 코드는 새로운 기능이 추가되었을 때 변하는 부분을 최소화하는 것을 말한다. 이렇게 하기 위해서는 변하는 부분과 변하지 않는 부분을 명확하게 구분 지어 코드를 작성하는 것이 필요하다. 상속을 통해 다형성있는 코드를 구현하면서 부모와 자식 타입에 같은 이름을 가진 메서드를 작성한 경우 여러 가지 문제와 불편함이 있음을 알 수 있었다. 단순 상속과 다형성의 한계 public class Music { // 상속을 위한 부모 클래스 역할만 수행 public void play() { System.out.println("음악 재생)"; } } public class Dash extends Music { @Override public void play() { System.out.println("Dash를 .. 2024. 1. 22.
[Java] 객체 지향 4대 특징-2 (다형성) 다형성이란 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 말한다. 보통의 객체는 하나의 타입으로 고정되어 있지만 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다. 다형성은 상속과 추상화와 연계되어 사용하므로 일반적인 객체에 경우에는 다형성을 적용할 수 없음을 기억하자. 다형성의 특징을 알아보기 전에 상속을 받은 클래스들의 인스턴스를 생성했을 때, 해당 인스턴스의 상태를 짚어봐야 한다. // 부모 클래스 public class Parent { public void parentMethod() { System.out.println("parent method"); } } // 자식 클래스 public class Child extends Parent { public void childMeth.. 2024. 1. 19.
[Java] 객체 지향 4대 특징-1 (상속, 캡슐화) 💡 특징에 대해 처음부터 끝까지 설명된 글이 아닙니다. 인프런 김영한님의 실전 자바 - 기본편을 바탕으로 제가 알지 못했던 부분, 헷갈렸던 부분, 익숙해져야 하는 부분 등을 위주로 정리한 내용이니 참고 부탁드립니다. 객체 지향 4대 특징으로는 상속, 캡슐화, 추상화, 다형성이 있다. 이 중에서 가장 중요한 것은 다형성이며 다형성을 이해함으로서 상속과 추상화를 이해할 수 있고 더 나아가 여러 가지 디자인 패턴 등을 이해할 수 있다. 상속 상속은 말 그대로 나의 특성을 어떤 클래스에게 물려주어 사용할 수 있게 하는 특징이다. 특성을 물려주는 클래스를 부모 클래스, 특성을 물려받는 클래스를 자식 클래스라고 한다. 클래스의 인스턴스를 생성할 때, 해당 메모리에 접근할 수 있는 메모리 주소를 인스터스 명에 저장한.. 2024. 1. 15.
this와 super this와 super this와 super 키워드는 변수와 메서드에 관련이 있는 키워드이다. this : 현재 클래스의 변수(또는 메서드)을 가져올 때 사용하는 키워드 super : 현재 클래스의 상위 클래스(상속 관계)의 변수(또는 메서드)을 가져올 때 사용하는 키워드 public class Child extends Parents { public String value; public Child (String value) { this.value = value; // 현재 클래스(Child)의 값 super.value. = value; // 상위 클래스(Parents)의 값 } } public class Parents { public String value; } this()와 super() this()와 .. 2024. 1. 5.
자바 리플렉션(Reflection) 리플렉션(Reflection)이란? 리플렉션의 어원 리플렉션의 어원은 반사, 비치다라는 뜻을 가진다. 즉, 리플랙션은 실질적인 주체(클래스)를 투영한 혹은 반사된 이미지, 클래스 로더에 의해 JVM 메모리 영역에 로드된 클래스 정보를 활용하는 기능이라고 생각해볼 수 있다. 리플렉션이란? 리플렉션은 런타임에 사용되는 기능으로 프로그램 실행 중에 사용자, 운영체제 및 기타 프로그램과 상호작용하면서 클래스, 인터페이스 등을 검사하고 조작할 수 있는 기능을 말한다. 💡 컴파일타임 : 소스코드를 컴파일러에 의해 컴파일 하는 단계 => 스냅샷 런타임 : 컴파일된 코드를 운영체제, 사용자 등과의 상호작용하는 단계 => 상호작용 리플렉션 동작 원리 컴파일된 코드는 Class Loader에 의해 클래스의 메타정보들을 메.. 2023. 9. 5.
[Java] Record란? Record란? - Java 14 버전에 추가된 것으로 데이터 저장과 관련된 작업을 더 쉽게 처리할 수 있도록 도와주는 새로운 데이터 타입을 말한다. - Record는 Class를 정의하는 더 간단하고 명확한 방법을 제공하여 데이터 객체를 생성하고 관리하는데 도움을 준다. - 불필요한 중복 코드를 줄여 가독성 및 유지 보수성이 높다. public record Example(String a, int b) { // Record body (생략 가능) } Record의 특징 1. 불변성 - Record 객체가 생성된 후에는 내부의 데이터가 변경될 수 없다. public (final) record Example(String a, int b) { // Record body (생략 가능) } - record를 선언.. 2023. 8. 9.