Java 17

[중앙정보처리학원] Java* 다형성 (Polymorphism)

다형성이란? 다형성이란 "객체가 여러 형태를 가진다" 라는 의미로 해석되며, 하나의 객체가 여러가지 타입으로 사용되는 것을 의미함 다형성은 상속을 전제 조건으로함 다형성을 위해 자바는 자식 클래스가 부모 클래스의 타입을 가질 수 있도록 허용 즉, 부모 타입에 모든 자식 객체가 대입 될 수 있다. 부모 타입 변수에 어떠한 자식 객체든 들어갈 수 있다, 라는 개념이 다형성이다. tips // 다형성을 통해 이종(다른)모음 배열을 구현할 수 있음. // 객체타입에서 다운캐스팅의 전제조건: 반드시 상속관계가 있어야 하며 // 자식객체가 부모타입으로 업캐스팅 된 것만 내릴 수 있음 // 즉 부모객체를 자식타입으로 내릴 수는 없다. // 다형성은 객체의 교혼성을 높여주며 // 객체가 특정 부품객체에 종속되지 않도록..

Java 2024.04.22

[중앙정보처리학원] Java* 사용 제한자 final, 열거형 Enum

final 키워드 final을 해석하면 ‘마지막’ 이라는 뜻이지 않은가. final 키워드는 필드, 메서드, 클래스, 지역변수에 선언이 가능하다. 그렇다면 마지막 필드, 마지막 메서드, 마지막 클래스일까? 약간은 의미가 비슷하다고 할 수도 있겠다. 마지막 필드와 지역변수 → 더 이상 값의 변경은 없다. 마지막 메서드 → 더 이상 재 정의는 없다. 마지막 클래스 → 더 이상의 개념의 확장은 없다. tips public static final int ( psfi 등으로 줄여서가능 ) 자바의 상수 : 무조건 static final 같이 final 걍 상속을 다 막아버리는거임 ' final 필드 public class Person { final String nation; //에러 String name; int ..

Java 2024.04.22

[중앙정보처리학원] Java* 사용 제한자 static

Static이 무엇인가? 정적(static)은 ‘고정된’ 이란 의미를 가지고 있습니다. static이라는 키워드는 필드와 메서드에 붙일 수 있는데, 다른 말로 정적 필드와 정적 메서드 라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다. (클래스 멤버라고도 한다.) tips static 그니까 똑같은 값인데 궂이 여러개 만들 일 없는거 // 정적 메서드(static) : 모든 객체가 공유하며 객체 생성없이 접근 가능 // static 은 this 가 있을 수 없음. // static 데이터는 객체 생성 없이 접근 가능, new 안해도 사용가능 static 필드 public class MyClass { public int a; //인스턴스 필드 public static int b; //정적 필드 } 클래스에 ..

Java 2024.04.22

[중앙정보처리학원] Java* 객체지향 캡슐화(encapsulation)

캡슐화(encapsulation) 이란? 캡슐화란 객체의 상태와 동작을 하나의 단위로 묶어서 구현하는 것을 의미한다. 다시 말하자면, 하나의 목적을 이루기 위해 관련 있는 모든 것들을 하나의 캡슐에 담아 두는 것을 의미한다. 어떻게 보자면 위에서 소개한 setter 메서드 같은 경우에도 캡슐화의 일환으로 볼 수 있다. 객체의 상태를 뜻하는 필드를, 동작을 뜻하는 메서드와 하나의 단위로 묶어서 관리하는 것이기 때문인데, 또 다른 예시를 소개해 보겠다. // 시동 거는 기능 public void engineStart() { System.out.println("시동 버튼을 눌렀습니다."); System.out.println("시동이 걸렸습니다."); } // 엔진에 연료가 주입되는 기능 private void..

Java 2024.04.22

[중앙정보처리학원] Java* 객체지향 접근 제한자 (Access Modifier)

접근 제한자 접근 제한자(access modifier)는 클래스, 필드, 메서드, 생성자에 대한 접근 권한을 제한하는 키워드이다. 자바에서는 다음과 같은 네 가지의 접근 제한자가 있다. public, : 모두 접근가능 protected, : 같은 패키지 내 가능, default보다 주로 사용됨 default, : void 앞에 아무것도 붙지않으면 void private : 같은 클래스 내에서만 접근이 가능하다. 같은 클래스 내의 경우의 코드 package day07.modi.pac1; public class A { // 필드 public int f1; int f2; // default 제한 private int f3; // 메서드 public void m1() {} void m2() {} // defau..

Java 2024.04.22

[중앙정보처리학원] Java* 객체지향 상속 (Inheritance)

상속이란 무엇인가 일상생활 속에서 상속이란 유, 무형의 자산을 부모로부터 자식이 물려받는 것을 말한다. 그렇다면 프로그래밍에서의 상속이란? 거의 의미가 동일하다고 할 수 있다. 부모 클래스가 가진 속성과 기능을 자식 클래스가 물려받는 것을 말한다. tips // 상속은 확장개념이다. 3g폰이 2g 폰의 기능을 가지고 있듯 상속이 필요한 상황 동물 클래스를 여럿 작성한다. 작성하다 보니… 불합리한 점이 발견되었다. 각각 클래스는 다르지만, 가지고 있는 속성과 기능이 너무나 비슷한 것을 찾아볼 수 있다. 모든 동물들 클래스가 name, age, favorite 이라는 속성을 가지고 있고 breath() 기능과 sleep() 기능을 가지고 있다. 이 상황에서 동물 클래스를 더 제작한다면… 그리고 그 동물들도 ..

Java 2024.04.22

[중앙정보처리학원] Java* 객체지향 Practice

문제: 전자 제품 매장 관리 시스템 요구사항 기본 클래스 ElectronicProduct 생성 이 클래스는 모든 전자 제품의 기본이 되는 클래스입니다. 속성: productName (제품명, 문자열) price (가격, 실수형) manufacturer (제조사, 문자열) 메소드: 생성자: 모든 속성을 매개변수로 받아 초기화합니다. displayInfo(): 제품의 정보를 출력하는 메소드. 출력 예: "Samsung TV, 가격: 2000000원, 제조사: Samsung" 서브 클래스 Television 생성 ElectronicProduct의 서브 클래스입니다. 추가 속성: screenSize (화면 크기, 정수형) 메소드: 생성자: 기본 클래스의 속성과 screenSize를 초기화합니다. displayI..

Java 2024.04.18

[중앙정보처리학원] Java* 객체지향 생성자, 접근제한자

생성자의 특징 생성자의 이름은 클래스의 이름과 대/소문자까지 완벽하게 동일해야 한다. 객체를 생성할 때 반드시 호출해야 한다. 일종의 메서드지만, 리턴 타입이 없고 리턴값은 주소값으로 고정되어 있음. 생성자를 하나도 선언하지 않으면, JVM이 매개변수가 없고, 내용이 없는 가장 기본 형태의 생성자를 하나 생성해 주기 때문에 생성자 선언 없이도 객체 생성은 가능하다. 객체를 생성하는 기능 뿐만 아니라, 객체 생성과 동시에 해야 할 일 (필드 초기화) 등을 진행할 수 있다. 접근제한자 package day07.encap; public class Car { private String model; // 자동차 모델명 private int speed; // 현재 속도 private char mode; // 변속 ..

Java 2024.04.18

[중앙정보처리학원] Java* 객체지향 프로그래밍

객체란 무엇인가? 그리고 왜 써야 하는가 객체란 데이터와 그 데이터를 처리하는 함수들을 묶어놓은 하나의 독립적인 단위입니다. 이렇게 하나의 단위로 묶어놓으면 코드의 가독성이 좋아지고 유지보수가 편리해집니다. 또한 객체 지향 프로그래밍은 코드 재사용성이 높아지고 대규모 프로그램을 개발할 때 유용합니다. //객체 설계용 클래스(라이브러리 클래스)는 메인 메서드를 작성하지 않습니다. public class Pen { //객체의 속성을 필드(멤버변수)라고 부릅니다. String color; int price; String productNo; //객체의 기능을 메서드라고 합니다. void write() { System.out.println(color + "색 글을 씁니다."); } void draw() { Sys..

Java 2024.04.18

[중앙정보처리학원] Java* 메서드 basic

public class MethodBasic { // 자바의 함수는 반드시 클래스 블록 내부, 다른 함수 외부에 만들어야 함 // 두개의 정수를 전달받아 합을 리턴하는 함수 static int add(int n1,int n2) { return n1 + n2; // function 대신 return값의 타입에 따라 바꿈 ex) return true 면 boolean add() } // static String[] add(int n1,int n2) { // return new String[]{"hello", "java"}; // // } static void multiply(int n1, int n2) { //void return 없음 System.out.printf("%d x %d = %d\n", n1, ..

Java 2024.04.12