Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

JAVA22

11. 추상 클래스와 인터페이스 추상클래스와 인터페이스를 다루기 전에, 지난 시간에 배운 다형성을 고려한 간단한 예시를 하나 보자. 이 세상은 대부분 객체로 표현할 수 있다. 나는 동물을 좋아하기 때문에 자바로 동물을 만들려고 한다. 고양이도 만들고.. 강아지도 만들고.. class Cat { public void sound() { System.out.println("냥"); } } class Dog { public void sound() { System.out.println("멍"); } } 지금은 울음소리라는 메서드 하나뿐이지만, 실제로는 더 다양한 메서드가 존재할 것이다. (달린다, 먹는다 등) 그럼 새로운 동물을 만들 때마다 함수를 일일이 다 만들어주기는 너무 귀찮지 않을까..? 여기서 추상화의 개념을 떠올려 보자. 고양이와 강.. 2024. 3. 19.
10. 다형성 - 캐스팅과 오버라이딩 다형성(Polymorphism)은 다양한 형태를 의미한다. 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있음을 의미한다. (기본 타입은 해당 타입으로 고정되어 있음을 생각해보자_ int a, String b) 크게는 다형적 참조, 메서드 오버라이딩이 대표적인 다형성의 예시이다. 다형적 참조 객체를 다양한 타입으로 참조할 수 있음을 의미한다. (인터페이스를 통한 다형적 참조도 있지만 여기서는 상속관계의 다형적 참조만 다룬다.) 지난 시간 상속을 배우면서 핵심 내용을 기억하면 쉽게 이해할 수 있다. '부모를 상속한 자식 클래스 인스턴스가 생성되면 자식뿐만 아니라 부모의 객체도 함께 생성된다.' 또한 c언어의 포인터의 개념을 안다면, 좀 더 잘 이해할 수 있다. 결국 클래스 객체의 참조변수.. 2024. 3. 17.
8. 상속, 오버라이딩, super 객체지향의 4대 특징(캡슐화, 상속, 추상화, 다형성) 중 상속에 대해 Araboza. 추상화 먼저 추상화는 '복잡한 것을 단순하게' 만드는 것을 말한다고 할 수 있다. 그 방법 중 하나는, 복잡한 객체들 사이에서 공통된 특징을 뽑아내는 것이다. 세상에는 많은 자동차들이 존재한다. 가솔린차, 전기차, 수소차 등... 근데 분명 자동차라면 응당 존재하는 속성이나 기능이 존재한다. 바퀴, 문, 핸들과 같은 속성이 있을 것이고 문 열기, 엑셀 밟기, 주유하기 등의 기능이 있을 것이다. 자동차들을 각각 클래스로 만드는 방법도 있겠지만, 공통된 부분을 뽑아서(추상화해서) '자동차'라는 클래스를 만든다면? 그리고 이 클래스를 상속한 세부적인 자동차들로 만들면 중복된 코드는 줄이고 더 효율적인 프로그래밍이 가능하다... 2024. 3. 11.
7. final final에 대한 설명은 아래짤이 최고라고 생각한다. final은 말 그대로 '최종' 이라는 뜻이다. 클래스,변수,메서드 등 다양한 곳에 붙일 수 있는 modifier이다. 아래 예제를 통해서 final에 대해 알아보자. public final class FinalPrac { public static final int MAX_USERS = 9999; public final int memberFinal = 100; public final int value; public ConstructInit(int value) { this.value = value; } public final void finalMethod() { System.out.println("난 못바꿈"); } } 상수(constant) 먼저 자바.. 2024. 3. 7.
6. static 정적 자바 메모리 구조 프로세스의 메모리 구조를 설명할 때 코드, 데이터, 힙, 스택 영역이 있다는 설명을 많이 들었다. 자바에서도 유사한데, 데이터 영역을 메서드 영역이라고 칭한다. (그냥 같다 생각하면 됨) CODE AREA 프로그램의 코드가 저장되는 영역(read-only) 프로그램이 실행될 때 메모리의 하단에서부터 적재된다. METHOD (CLASS) AREA static 이해를 위해 중요한 영역 프로그램의 실행에 필요한 공통 데이터를 관리하는 영역으로, 세부적으로는 아래와 같은 영역이 있다. 1. 클래스 정보(Class Information) 클래스의 실행을 위해 필요한 바이트코드(for jvm에 의한 클래스 로딩)가 저장되는 영역 클래스의 이름, 상위 클래스 및 인터페이스, 멤버 변수 및 메서드 정.. 2024. 3. 7.
5. 접근 제어자와 캡슐화 For Safe Programming ! 객체 지향 프로그래밍에서 관련된 데이터와 기능, 즉 필드(데이터)와 메서드는 클래스로 묶어서 관리하기로 했다. 하지만 이것만으로는 부족하다. 기껏 클래스에 잘 담아뒀는데 누가 마음대로 꺼내서 건드리면 말짱 도루묵이기 때문이다. 이를 위해서 존재하는 것이 바로 접근 제어자(access modifier)이다. 접근 제어자는 말 그대로 접근의 수준을 제어할 수 있도록 하는 것이다. '필요한 부분만 공개하겠다 !' 캡슐화(Encapsulation) 객체지향의 4가지 특징 중 하나인 캡슐화는 말 그대로 캡슐(클래스) 안에 데이터와 로직을 담는 것을 말한다. 즉 데이터(필드)와, 데이터 조작 메서드를 묶어서 관리하고 접근 제어자를 통해 외부의 무분별한 접근을 제한하는 것이다.. 2024. 3. 3.