개발언어
-
Java - 추상 클래스(템플릿 메서드)3개발언어/JAVA 2023. 11. 3. 16:25
추상 클래스와 템플릿 메서드 '템플릿(template)'이란 용어를 사전에서 찾아보면, 틀이나 견본을 뜻한다. 틀이 있는 메서드라는 의미이다. 템플릿 메서드는 추상 클래스를 사용하여 구현할 수 있다. package template; public abstract class Car{ public abstract void drive(); public abstract void stop(); public void startCar(){ System.out.println("시동을 켭니다."); } public void turnOff(){ System.out.println("시동을 끕니다."); } //템플릿 메서드 final public void run(){ startCar(); drive(); stop(); tur..
-
Java - 추상 클래스(추상 클래스 만드는 이유)3개발언어/JAVA 2023. 11. 3. 15:29
추상 클래스 만드는 이유 package abstractex; public class ComputerTest{ public static void main(String[] args){ //오류 발생 ⛔Computer c1 = new Computer(); Computer c2 = new DeskTop(); //오류 발생 ⛔Computer c3 = new NoteBook(); Computer c4 = new MyNoteBook(); } } Computer 클래스형으로 인스턴스를 4개 생성했다. 그런데 코드를 보면 Computer와 NoteBook에서 오류가 난다. 오류 메시지를 확인해보면 Computer클래스와 NoteBook클래스를 인스턴스로 생성할 수 없다고 나온다. 추상 클래스는 인스턴스로 생성할 수 없다..
-
Java - 추상 클래스(추상 클래스)1-1개발언어/JAVA 2023. 11. 3. 14:54
추상 클래스 //{}안의 내용이 함수의 몸체 int add(int x, int y){ return x + y; } 추상 클래스는 항상 추상 메서드를 포함한다. 추사 메서드는 구현 코드가 없다. 함수의 구현 코드가 없다는 것은 함수 몸체(boby)가 없다는 뜻이다. 추상 메서드 abstract int add(int x, int y); 증괄호{}로 감싼 부분을 함수의 구현부(implementation)라고 한다. 이 부분이 없는 함수는 추상 함수(abstract function)이고 자바에서는 추상 메서드(abstract method)라고 한다. 추상 메서드는 위와 같이 선언만 하며 abstract 예약어를 사용한다. 그리고 " { } "대신 " ; " 를 사용한다. int add(int x, int y){..
-
Java - 상속 다형성(다형성 활용하기:IS-A 관계, HAS-A 관계)6-2개발언어/JAVA 2023. 11. 3. 12:00
다형성 활용하기 상속은 언제 사용할까? VIP 고객 등급을 추가하는 문제를 다시 생각해 보자. 이미 Customer 클래스가 구현되어 있는데 추가 요구 사항이 생긴 것이다. 사실 가장 간당하게 생각해보면, 이미 Customer 클래스가 존재 하므로 여기에 추가 내용을 함께 구현할 수도 있다. Customer 클새스에 VIP 고객의 내용도 함께 구현하는 것이다. 그런데 추가 기능을 이렇게 구현하면 코드가 굉장히 복잡해진다. 그 이유는 일반 등급 고객이 사용하지 않는 속성(상담원ID,할인율 등)뿐만 아니라 VIP 고객만을 위한 서비스 내용까지 추가 해야 하기 때문이다. if(customerGrade == "VIP"){ //할인해 주고, 적립도 많이 해주고 } else if(customerGrade == "G..
-
Java - 상속 다형성(다형성 활용하기)6-1개발언어/JAVA 2023. 11. 3. 11:17
다형성 활용하기 일반 고객과 VIP 고객의 중간 등급 만들기 예제 시나리오 고객이 늘어 VIP 고객만큼 물건을 많이 구매하지는 않지만, 그래도 단골인 고객에게 해택을 주고 싶다. 그래서 GOLD고객 등급을 하나 추가한다. GOLD 고객의 혜택은 다음과 같다. - 제품을 살 때는 항상 10%할인을 준다. - 보너스 포인트를 2% 적립해 준다. - 담당 전문 상담원은 없다. 새로운 고객 등급 추가하기 GoldCustomer.java package polymorphism; public class GoldCustomer extends Customer{ double saleRatio; public GoldCustomer(int customerID, String customerName){ super(customer..
-
Java - 상속과 다형성(다형성)5개발언어/JAVA 2023. 11. 1. 16:31
다형성 다형성(polymorphism)이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말한다. 쉽게 말해 같은 코드에서 여러 실행결과가 나오는 것이다. package polymorphism; class Mammalia{ public void move(){ System.out.println("동물이 움직입니다."); } } class Human extends Animal{ public void move(){ System.out.println("사람이 두 발로 걷습니다."); } } class Tiger extends Animal{ public void move(){ System.out.println("호랑이가 네 발로 뜁니다."); } } class Eagle extends Animal{ pub..
-
Java - 상속과 다형성(super)2개발언어/JAVA 2023. 10. 17. 15:29
상속에서 상위클래스와 하위클래스 그리고 super 예약어 상속에서 클래스 생성과 형 변환 하위 클래스의 인스턴스가 생성될 때는 상위 클래스의 인스턴스 생성자가 먼저 호출된다. 상속 관계에서 인스턴스의 생성 과정을 살펴보면 하위 틀래스가 상위 클래스의 변수과 메서드를 사용할 수 있는 이유와 하위 클래스가 상위클래스의 자료형으로 형 변환 할 수 있는 이유를 이해할 수 있다. 상위 클래스 생성자가 호출될 때 상위 클래스의 멤버 변수의 메모리가 힙 메모리에 생성되는 것이다. 하위 클래스 VIPCustomer가 생성될 때 메모리 구조를 그려보면 위와 같다. 위 그림과 같이 상위 클래스 변수가 메모리에 먼저 생성되기 때문에 하위 클래스에서 이 값들을 모두 사용할 수 있다. 상위 클래스의 변수를 private으로 선..
-
Java - 상속과 다형성(상속)1개발언어/JAVA 2023. 10. 17. 15:29
상속이란? B클래스가 A클래스를 상속받으면 B클래스는 A클래스의 멤버 변수와 메서드를 사용할 수 있다. 객체 지향 프로그램은 유지 보수하기 편하고 프로그램을 수정하거나 새로운 내용을 추가하는 것이 유연한데, 그 기반이 되는 기술이 상속이다. 클래스의 상속 class B extends A { } 자바 문법으로 상속을 구현할 때는 extends 예약어를 사용한다. 이때 사용하는 extends 예약어는 '연장,확장하다'의 의미이다. 즉 A가 가지고 있는 속성이나 기능을 추가로 확장하여 B클래스를 구현한다는 뜻이다. 위 그림과 같은 관계를 생각해 보자 포유류는 사람보다 일반적인 개념이다. 즉 사람은 포유류의 특징과 기능을 기본으로 더 많거나 다른 특징을 가지고 있다. 이렇게 상속 관계에서 상위 클래스가 하위 클..