개발언어/JAVA
-
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클래스를 구현한다는 뜻이다. 위 그림과 같은 관계를 생각해 보자 포유류는 사람보다 일반적인 개념이다. 즉 사람은 포유류의 특징과 기능을 기본으로 더 많거나 다른 특징을 가지고 있다. 이렇게 상속 관계에서 상위 클래스가 하위 클..
-
Java - Object4개발언어/JAVA 2023. 10. 17. 11:19
static 변수 여러 클래스에서 공통으로 사용하는 변수를 'static 변수'로 선언한다. static 변수의 정의와 사용방법 static 변수란 다른 용어로 '정적 변수'라고 한다. static 변수는 자바뿐만 아니라 언어에서도 비슷한 개념으로 사용하고 있는 변수로서 자바에서는 다른 멤버 변수처럼 클래스 내부에 선언한다. 변수를 선언할 때 다음과 같이 자료형 앞에 static 예약어를 사용한다. static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴트가 생성될 때마다 새로 생성되는 변수가 아니다. static 변수는 프로그램이 실행되어 메모리에 올라갔을때 딱 한 번 메모리 공간이 할당된다. 그리고 그 값은 모든 인스턴스가 공유한다. 다시 설명하면 일반 멤버 변수는 인스턴스가 생성될 ..