본문 바로가기

JAVA/Java2021-2

(41)
객체 지향 -3 IS-A 관계, HAS-A 관계 IS-A 관계 -> 상속(inheritance) : 일반적인 개념과 구체적인 개념과의 관계 ex) 상위(Employee), 하위(Engineer, Manager) HAS-A 관계 -> composition : 클래스가 다른 클래스를 포함하는 관계 ex) Student가 Subject를 포함하는 관계
객체 지향 -2.1 다형성을 사용하는 이유 다른 상속받는 클래스를 더 생성하여 확장하려고할 때, if ~ else if 구문이 구현되고 코드의 유지보수가 어려워진다. 일반 클래스에서 추가적인 요구사항이 있을 때, 다형성에 의한 확장성을 이용하여 ex) Gold 등급을 추가하여 할인율은 똑같고 보너스 포인트 비율을 VIP 보다 적게 사용하고자하는 요구사항이 있을 때 package Basic_Grammar.chap3_OOP.ch04; import java.util.ArrayList; public class CustomerTest { public static void main(String[] args) { ArrayList customers=new ArrayList(); Customer customer1=new Customer(10010,"Tomas"..
Annotation 어노테이션 @ (의미는 주석->자바에서 활용됨)
객체 지향 -1-4.상속 (overriding) 오버라이딩 : 상위클래스에서 정의된 메서드를 하위 메서드에서 재정의 할 수 있다. @override : 문법적으로 발견은 안 되고 컴파일러에게 오버라이딩 된 메서드인 것을 알려준다. VIP 멤버에게는 값을 계산할 때, 할인해주는 것도 추가 package Basic_Grammar.chap3_OOP.ch02; public class VIPCustomer extends Customer { double salesRatio; private String agentID; public VIPCustomer() { customerGrade ="VIP"; bonusRatio=0.05; salesRatio=0.1; } public String getAgentID() { return agentID; } public void ..
객체 지향 -1.3 상속 (형변환) 형 변환(업캐스팅) : 상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성 : 상위 클래스 타입의 변수에 하위 클래스 변수가 대입 - 하위 클래스는 상위 클래스를 내포하고 있어서 묵시적 형변환이 가능하다. 이 경우(업캐스팅 된 경우) 힙메모리에서 상위클래스 멤버변수에만 접근 가능하다.
객체 지향 -1.2 상속 (super, 메모리 상태) 하위 클래스를 생성하여 생성자를 호출할 때, 아무것도 없을 때에는 컴파일러가 super() 상위 클래스의 생성자를 자동으로 호출한다. 상위 클래스에 default constructor가 없으면서 매개변수가 있는 생성자만 있을 때에는 명시적으로 super(매개변수)를 써주어야 한다.
객체 지향 -1. 상속 (단일상속, protected 접근제어자) 자바 언어 추구 : 안정성, 심플 - C나 C++보다 안정적인 언어를 만들자. (상속받을 수 있는 클래스가 많을 수록 기능의 확장이 가능하지만, 그로 인해 발생할 수 있는 모호성, 문제점을 예방 -> single inheritance) 상속을 구현 하는 경우 (결이 같은) 멤버십 시나리오 구현 package Basic_Grammar.chap3_OOP.ch01_inheritance; public class Customer { protected int customerID; protected String customerName; protected String customerGrade; int bonusPoint; double bonusRatio; public Customer() { //생성자 등급 실버, 보너..
함수형 인터페이스(functional interface) -메서드를 하나만 설정가능 1. 함수형 인터페이스 생성(메서드는 하나만 등록되어있어야 사용가능하다) 2. main()함수에서 함수형 인터페이스를 호출하면서 람다식 이용 -> 함수형 프로그래밍의 단점으로 가독성이 떨어질 수 있는데, 함수형 인터페이스를 생성할 때 어노테이션을 이용하여 @FunctionalInterface를 이용하여 생성하는 것을 추천한다. (내부에 여러개의 메서드를 선언하지 못하도록 한다) 실습 (두 숫자 중에 큰 수를 리턴하는 함수) 1. 함수형 interface 생성 및 메서드 1개 선언 2. 메인함수에서 함수형 인터페이스 변수 선언하면서 람다식 이용(인터페이스 선언해놓은 함수를 정의) 3. 인터페이스 메서드 호출하여 실행 package Basic_Grammar.chap6.ch02lambda.Test02; @Fu..