본문 바로가기
반응형

Programming Language/Java20

[자바] 다형성 - (2) 다형성의 활용과 다운 캐스팅, instanceof - 다형성 활용 일반 고객과 VIP 고객 사이의 중간 등급 만들기 GOLD 고객의 조건 - 제품을 살 때 10% 할인 - 보너스 포인트를 2% 적립 - 담당 전문 상담원 없음 결과는 다음과 같다. package first_project; public class GoldCustomer extends Customer{ double saleRatio; public GoldCustomer(int customerId, String customerName) { super(customerId, customerName); customerGrade = "GOLD"; bonusRatio = 0.02; saleRatio = 0.1; } @Override public int calcPrice(int price) { bonus.. 2021. 10. 23.
[자바] 다형성 - (1) 정의와 활용 예시 코드 앞서 배웠던 묵시적 클래스 형 변환과 가상 메서드를 바탕으로 다형성을 이해할 수 있다. - 다형성이란? 하나의 코드가 여러 자료형으로 구현되어 실행하는 것 - 다형성 코드 예시 package first_project; class Animal{ public void move() { System.out.println("animal moves."); } } class Human extends Animal{ public void move() { System.out.println("A man walks."); } } class Tiger extends Animal{ public void move() { System.out.println("A tiger runs."); } } class Eagle extends A.. 2021. 10. 23.
[자바] 상속에 대하여 - (2) 오버라이딩, 가상 메서드 상속에서 중요한 것 중에 클래스 간의 형 변환이 있다. 이전 예시인 Customer와 VIPCustomer 관계를 생각해볼 때 하위 클래스인 VIPCustomer는 상위 클래스인 Customer보다 더 많은 기능을 갖고 있음 상속받은 클래스는 상위 클래스 기능을 모두 사용 + 본인의 기능 사용이기 때문이다. 따라서 VIPCustomer는 VIPCustomer형인 동시에 Customer형이라고 할 수 있다. 그래서 다음과 같이 형변환이 가능해짐 Customer customerKim = new VIPCustomer(2020, "김유신", 111); 이때 이 customerKim은 정체가 뭘까? VIPCustmer 생성자가 호출되므로 VIPCustomer의 변수, 메서드가 메모리에 생성됨. 그런데 클래서 자료.. 2021. 10. 23.
[자바] 상속에 대하여 - (1) 상속의 기능과 구현, super의 뜻 - 상속이란 상속: 물려주다 A 클래스가 B 클래스에게 상속한다 = B 클래스가 A 클래스를 상속받는다 이때 A 클래스가 상위 클래스, B 클래스가 하위 클래스가 된다. - 구현 상속은 extends 예약어를 통해 구현한다. class B extends A { } - 상속의 기능 상위 클래스에서 작성한 변수나 메서드를 사용할 수 있다. 이때 상위 클래스의 변수나 메서드 중 외부 클래스에서는 사용할 수 없지만 하위 클래스에서는 사용할 수 있도록 지정하는 것이 protected 예약어 - 하위 클래스가 상위 클래스의 변수나 메서드를 사용할 수 있는 이유 하위 클래스가 생성 될때 상위 클래스의 생성자가 먼저 호출되고 그 다음에 하위 클래스의 생성자가 호출되기 때문. 즉, 상위 클래스의 변수가 메모리에 먼저 생.. 2021. 10. 23.
[자바] static을 활용한 싱글톤 패턴 싱글톤 패턴 인스턴스를 단 하나만 생성하는 디자인 패턴 상황 예시 회사의 직원들을 객체 지향 프로그램으로 구현하는 상황 - 이때 직원들의 인스턴스는 당연히 여러 개일 수 있지만, - 회사의 인스턴스는 단 하나로 존재해야 함 구현 방법 1. 생성자를 private로 만들기 클래스 정의시 생성자를 정의해주지 않으면 디폴트 생성자가 자동으로 만들어지는데 디폴트 생성자는 public임. 따라서 디폴트 생성자가 생성되지 않도록 생성자를 반드시 명시해주어야 함 이때 private로 선언하여 클래스 외부에서 마음대로 Company 인스턴스를 생성할 수 없게 함 package first_project; public class Company { private Company() {} } 2. 클래스 내부에 static으로.. 2021. 10. 23.
[자바] 정적 변수 static static 변수 다른 멤버 변수처럼 클래스 내부에 사용한다. 클래스 변수라고도 부름 사용법은 자료형 앞에 static 예약어를 붙여주면 된다. ex) static int serialNum; 특징 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스 생성 시마다 새로 생성되지 않는다. static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당됨 모든 인스턴스가 하나의 static 변수를 공유한다. 사용 예제 서로 다른 학생 인스턴스에게 다른 학번 부여 package first_project; public class Student { public static int serialNum = 1000; public int studentId; public String studen.. 2021. 10. 22.
반응형