본문 바로가기

JAVA

(145)
객체 지향 -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"..
메모리 영역, 가상 메서드 프로그램 안에는 코드가 있다(함수, 함수가 쓰는 변수, 명령어(instruction set)) -> 프로그램이 실행(load가 되면) -> 메인 메모리에 올라가는데 (코드 영역, 데이터 영역) 코드 영역 : 프로그램에서 만든 메서드 데이터 : 상수 static영역 변수 힙 메모리 : 인스턴스 변수 스택 메모리 : 지역변수 가상 메서드 : 함수이름으로 호출되는 것이 아니라 함수 이름이 가리키는 주소를 가리키는 테이블(가상 메서드 테이블) 각 클래스 마다 자신의 메서드 주소를 가지고 있음
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() { //생성자 등급 실버, 보너..