전체 글 230

인터페이스(interface)

인터페이스모든 메서드가 추상 메서드로 선언됨 ( public abstract )모든 변수는 상수로 선언됨 ( public static final )  package basic.ch22;interface Animal { // 추상 메서드만 선언 가능 // public abstract void eat(); // public abstract void move(); // 축약 가능 void eat(); void move();}// implements - 구현하다 class Dog implements Animal { @Override public void eat() { System.out.println("먹이를 먹다"); } @Override public void move() { System.out.pr..

Java 2024.04.25

추상 클래스(abstract class)

추상 클래스추상 클래스(Abstract Class)는 하나 이상의 추상 메서드를 포함하고 있는 클래스이다.추상 메서드는 구현이 없는(메서드 몸체{ }가 없는)메서드 이며, 추상 클래서 내에서는 이러한 추상 메서드의 정의만을 포함하고 있다.추상 클래스는 직접적으로 객체를 생성할 수 없으며, 다른 클래스에서 상속받아 구현되어야 한다.   추상 메서드란? int add(int x, int y); // 선언 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님  package basic.ch21;/** * 추상 클래스란? * 추상 메서드를 포함하고 있거나 * abstract 키워드를 가지고 있는 클래스를 말한다. * 추상 클래스는 바로 new 키워드로 객체를 생성할 수 없다..

Java 2024.04.25

다형성(Polymorphism)

다형성다형성은 하나의 데이터 타입을 다양한 형태로 바라볼 수 있는 것다형성(Polymorphism)은 객체 지향 프로그래밍에서 중요한 개념 중 하나이다.이는 한 요소(예: 메서드, 클래스)가 여러 형태를 가질 수 있는 능력을 의미합니다.다형성은 코드의 유연성과 재사용성을 높여주며, 상속, 추상화, 인터페이스와 함께 사용된다.  package basic.ch20;public class Animal { public void move() { System.out.println("동물이 움직입니다"); } public void eating() { System.out.println("먹이를 먹습니다"); } } package basic.ch20;public class Human extends Animal { ..

Java 2024.04.25

연관, 의존 관계

연관관계(Association)와 포함관계(Composition)는 객체지향 프로그래밍에서 객체 간의 관계를 나타내는 두 가지 다른 개념이다. 그러나 이 둘은 완전히 독립적인 개념이 아니며, 포함관계는 연관관계의 특수한 형태로 볼 수 있다.즉, 모든 포함관계는 연관관계이나, 모든 연관관계가 포함관계인 것은 아니다. 연관관계(Association)연관 관계는 일반적으로 한 클래스의 객체가 다른 클래스의 객체와 상호작용을 하지만, 둘 사이의 생명주기에 대한 의존성은 갖지 않는 경우를 의미한다.예를 들어, 한 은행(Bank)과 여러 고객(Customer) 사이의 관계가 연관 관계의 사례가 될 수 있다.고객은 하나의 은행에 계좌를 가질 수 있고, 은행은 여러 고객을 가질 수 있지만, 고객의 생명주..

Java 2024.04.24

Composition(포함관계)

포함관계(Composition)자동차와 엔진의 관계를 상속으로 표현하면 맞는 개념일까?포함 관계는 한 클래스가 다른 클래스를 포함하는 관계를 말합니다.자바에서 포함관계(Composition)는 한 클래스가 다른 클래스를 자신의 필드(멤버변수)로서 포함하는 것을 말한다.이 개념은 "has-a" 관계로도 알려져 있으며, 객체 간의 강한 연관성을 나타낸다.즉, 하나의 객체가 다른 객체 없이는 의미가 없을 때 포함 관계를 사용한다.  package basic.ch18;public class Engine { String name; int price; void start() { System.out.println("엔진이 시작됩니다"); } void stop() { Syst..

Java 2024.04.24

상속(Inheritance)

상속의 개념 상속(Inheritance)은 객체 지향 프로그래밍에서 중요한 개념 중 하나이다. 상속은 기존의 클래스를 확장하여 새로운 클래스를 정의하는 메커니즘을 말한다. 상속을 통해 기존 클래스의 속성과 메서드를 재사용하고 확장하여 새로운 클래스를 만들 수 있다. 이를 위하여 상속에서는 두 개의 클래스 필요하다. 1. 부모 클래스(Parent Class) 또는 슈퍼 클래스(Superclass) - 기존에 정의된 클래스로, 상속의 대상이 되는 클래스. 부모 클래스의 속성과 메서드를 자식 클래스로 상속한다. 2. 자식 클래스(Child Class) 또는 서브 클래스(Subclass) - 부모 클래스를 확장하여 새롭게 정의되는 클래스. 자식 클래스는 부모 클래스의 모든 속성과 메서드를 상속받는다. 오버라이드..

Java 2024.04.23

메서드 오버로딩

메서드 오버로딩의 개념 메서드 오버로딩(Overloading)은 같은 이름의 메서드를 여러 개 정의하는 것이다. 이때 메서드의 시그니처(signature), 즉 메서드 이름과 매개변수의 타입, 개수, 순서가 서로 달라야 한다. 메서드 오버로딩을 사용하면 같은 기능을 하는 메서드들을 하나의 이름으로 통일할 수 있어 코드의 가독성을 높일 수 있다. package basic.ch16; /** * 메서드 오버로딩이란? * 같은 이름의 메서드를 여러 개 * 정의하는 것을 말한다. */ public class Calculator { // 덧셈 메서드 생성 public int add(int a, int b) { return a + b; } public double add(double a, double b) { ret..

Java 2024.04.23

배열의 활용(도서 관리 프로그램)

package basic.ch15; public class BooTest { public static void main(String[] args) { // 배열이란 - 연관된 데이터를 하나의 변수의 통으로 관리하고 싶다면 - 자료구조 // 배열을 사용할때 반드시 크기가 지정되어야 한다. Book[] books = new Book[10]; // 배열의 메모리 공간 선언 books[0] = new Book("플러터UI실전", "김근호"); books[1] = new Book("무궁화꽃이피었습니다", "김진명"); books[2] = new Book("흐르는강물처럼", "파울로코엘료"); books[3] = new Book("리딩으로리드하라", "이지성"); books[4] = new Book("사피엔스", ..

Java 2024.04.22

배열

자료구조의 개념 데이터를 어떻게 조직화하고 저장하며 접근할지를 결정하는 방법 1. 자료 구조의 특징 효율성 : 데이터를 효율적으로 저장, 검색, 삽입, 삭제 할 수 있어야 한다. 추상화 : 데이터의 논리적인 구조와 물리적인 구현을 분리하여 추상적으로 정의해야 한다. 재사용성 : 여러 응용 프로그램에서 재사용할 수 있도록 일반적이고 유연한 구조여야 한다. 2. 자주 사용되는 자료 구조 배열(Array) : 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 자료 구조 List, Map, Set, 스택, 큐, 트리 등이 있다. 배열 연관된 데이터를 모아 통으로 관리하기 위해 사용하는 데이터 타입 변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러 개의 데이터를 하나의 변수에 저장하기 위한 것..

Java 2024.04.22

static 메소드 (함수)

static 메소드 특정 클래스의 인스턴스에 속하지 않고 클래스 자체에 속한다. 따라서 객체를 생성하지 않고도 클래스 이름을 통해 직접적으로 호출이 가능하다. static 메서드는 클래스의 모든 인스턴스가 공유하며, 주로 유틸리티 기능이나 공통 동작을 제공하는 데 사용된다. 주요 특징 정리 객체 생성 없이 호출 가능 인스턴스 변수에 접근 불가 static 메서드는 객체의 인스턴스 변수에 직접적으로 접근이 불가능 하다. 왜냐하면 static 메서드는 객체가 생성되기 전에 호출될 수 있기 때문에 해당 객체의 상태를 알 수 없기 때문이다. 시나리오 코드 package basic.ex13; // 가지고 오다. 수입하다. import java.util.Random; public class LottoNumberMa..

Java 2024.04.22