JAVA 35

[JAVA]추상화

내용에 중점을 두는 것보다 핵심적인 개념을 추려내는 것을 추상화라고 합니다. 프로그램을 설계하거나 코딩을 할 때도 핵심적인 것을 추려내는 것은 중요합니다. 그리고 추상화를 하는 과정에서는 공통적인 것을 추려내는 것도 포함됩니다. 추상화를 간단히 요약하면 다음과 같습니다. 추상화는 핵심적인 것을 추려내는 것이다. 추상화를 하는 방법은 핵심적인 것만 추려서 노출시킨다. How보다 What에 포커스를 둔다. 그림의 인간에게는 네 가지 행위가 있습니다. 식탁에 앉는다. 숟가락을 들다. 숟가락으로 밥을 푸다. 밥을 입으로 가져간다. 네 가지 행위가 존재하는 이유는 단 하나의 핵심 행위 때문에 존재합니다. 바로 밥을 먹기 위해서 존재하는 행위들이죠. 현실 세계에서 우리가 사람들과 밥을 먹을 때 밥을 먹으라고 하지 ..

JAVA 2023.10.24

[JAVA]오버라이드(Override)

오버라이드의 의미는 더 우선시한다는 의미로 부모 클래스에 정의된 내용보다 자식 클래스에서 정의한 내용을 더 우선시합니다. 메서드의 내용을 재정의하는 것 즉 행위의 내용을 재정의하는 것과 같습니다. 오버라이딩 메서드를 오버라이딩하는 방법은 다음과 같습니다. 부모의 메서드와 동일한 메서드를 자식 클래스에서 재정의 하면 됩니다. public class Dog { protected String color; public void bite() { System.out.println("앙!"); } public void bark() { System.out.println("왈왈!"); } } public class Jindodog extends Dog { // 부모의 메서드를 재정의 했다. public void bite..

JAVA 2023.10.23

[JAVA]다형성

객체지향 언어의 특정중 하나인 다형성에 대해서 알아봅시다. 다형성이란 여러가지 형태에 속할 수 있는 성질, 하나의 객체 인스턴스가 여러가지 자료형을 가질 수 있는 것을 말합니다. 다형성을 논할 때 is - a 관계에 대해서 익숙해져야 합니다. 산소는 기체이다. 기체는 산소이다. 웰시코기는 개이다. 개는 웰시코기이다. Java 는 프로그래밍 언어이다. 프로그래밍 언어는 Java이다. public class Dog { protected String color; public void bite() { System.out.println("깨물다"); } public void bark() { System.out.println("짖는다"); } } public class Bulldog extends Dog { } p..

JAVA 2023.10.19

[JAVA]상속과 생성자

생성자는 상속받을 수 없습니다. 부모 클래스에서 생성자가 명시적으로 선언되어 있는 경우는 자식 클래스에서 필수적으로 부모의 생성자를 호출해야 하는 제약조건이 따릅니다. super() 메서드를 이용한 부모 생성자 호출 public class ParentDog { String name; ParentDog(String name) { this.name = name; } } public class ChildDog extends ParentDog { ChildDog(String name) { super(name); // 부모 ParentDog 클래스의 생성자 호출 } } 부모의 생성자가 명시적으로 선언되어 있는 경우 자식 클래스에서 부모의 생성자 중 하나를 반드시 호출해야 합니다. 그리고 부모의 생성자는 super..

JAVA 2023.10.18

[JAVA]상속

1. 상속 자식 클래스가 부모 클래스가 가지고 있는 요소들에 접근 할 수 있도록 하고 요소들을 가질 수 있도록 하는 것을 상속이라고 합니다. extends 상속을 하는 방법은 extends 키워드를 이용합니다. public class ParentDog { } public class ChildDog extends ParentDog { } extends 키워드를 이용한 상속은 다중 상속이 불가능하며 자식 클래스는 하나의 부모 클래스에서만 상속 받을 수 있습니다. 또한 조부모 클래스, 부모 클래스, 자식 클래스로 구성할 수도 있습니다. public class GrandParentDog { } public class ParentDog extends GrandParentDog { } public class Chi..

JAVA 2023.09.21

[JAVA]String 메서드

문자열 다루기 String 클래스에는 문자열을 가공하거나 판단할 수 있도록 도와주는 몇 가지 메서드들이 존재합니다. 모든 메서드들을 소개하지는 않고, 주로 사용되는 메서드들을 설명합니다. 외울 필요는 없습니다. 필요할 때 기억을 더듬어 찾아서 사용하면 됩니다. 1. public int length() - 문자열 길이 반환 문자열의 길이를 반환한다. String text = "카페라떼"; int length = text.length(); // 4 String text = "라떼"; int length = text.length(); // 2 2. public boolean contains(CharSequence s) - 문자열 포함 여부 확인 해당 문자열이 매개변수에 전달되는 문자열을 포함하고 있는지 확인합..

JAVA 2023.09.21

[JAVA]String 객체와 문자열 상수

1. String 객체와 문자열 상수 우리는 익숙하게 String 객체와 문자열을 사용했었습니다. String name = "포도"; 해당 코드는 세 부분으로 나뉘어져 있습니다. String 참조 자료형, 변수명, 문자열로 구성되어있습니다. String 참조 자료형을 사용할 수 있는 이유는 Java 언어 스펙에 이미 String 클래스가 정의되어 있기 때문입니다. 그리고 쌍따옴표로 감싸진 "포도"는 문자열 상수(String constant) 라고 부릅니다. 문자열 생성 문자열을 생성할 때 여러 방법으로 생성할 수 있습니다. // 문자열 상수 String name = "포도"; // String 객체를 이용하여 생성 String name = new String ("포도"); // String 객체를 이용하..

JAVA 2023.09.20

[JAVA]캡슐화

1. 접근 제어 지시자 접근 제어 지시자를 이용하여 클래스, 변수, 메서드의 접근을 가능하게 하거나 하지 못하도록 할 수 있습니다. 접근 - 클래스, 변수, 메서드의 접근을 제어 - 제어 할 수 있는 지시자 - 키워드 그렇다면 왜 클래스, 생성자, 변수 메서드를 접근 가능하게 하거나 하지 못하도록 해야 할까요? 이 부분은 깊고 깊은 소프트웨어 설계 관점에서 생겼습니다. 캡슐화를 하는 이유 캡슐 안에 들어간 내용물을 보호하고 숨기기 위해서(정보은닉) 내부에서 사용하는 클래스를 노출하지 않거나 클래스 내부에서만 사용하는 메서드가 외부에 노출되지 않도록 숨기고 변수에 저장된 값이 외부에서 변하지 않도록 보호하기 위함입니다. private 지시자 private 지시자는 생성자, 변수, 메서드에 선언할 수 있고,..

JAVA 2023.09.12

[JAVA]객체의 합성

객체의 합성(has - a) 객체와 관련된 강의에서 객체는 속성과 행위를 가지고 있다고 했는데, 각 객체들은 독립적인 속성과 행위를 가지고 있는데 이러한 객체들이 모여 또 하나의 객체를 만들 수 있습니다. 이것을 객체를 합성한다고 부릅니다. 자동차 객체 class Car { String name; Accelerator accelerator; Engine engine; Handle handle; Wheel wheel; Car(String name) { this.name = name; this.accelerator = new Accelerator(name); this.engine = new Engine(name); this.handle = new Handle(); this.wheel = new Wheel("..

JAVA 2023.09.12

[JAVA]메서드 오버로딩

1. 메서드 오버로딩 생성자 오버로딩과 같이 메서드도 오버로딩 할 수 있습니다. 메서드의 이름이 같더라도 메서드에 선언된 매개 변수의 개수나 자료형이 다르면 동일한 이름의 메서드를 여러 개를 선언할 수 있습니다. class Person { void setData(String name) { … } void setData(int age) { … } void setData(String name, int age) { … } } 그리고 이런 방식으로 메서드를 사용할 수 있습니다. Person person = new Person(); person.setData("이철수"); person.setData(30); person.setData("이철수", 30); 다만 생성자 오버로딩에서 주의할 점과 똑같이, 같은 자료형..

JAVA 2023.09.08