[JAVA] 자바의정석 기초편 7장 연습문제
·
프로그래밍/java
1. - 섯다카드 20장을 포함하는 섯다카드 한 벌(SutdaDeck) - 섯다카드 20장을 담는 SutdaCard배열을 초기화하라. - 단, 섯다카드는 1~10까지 숫자가 적힌 카드가 한쌍씩 존재 - 숫자 1,3,8인 경우 둘 중 한장은 광(Kwang)이어야 함. - SutdaCard의 인스턴스 변수 isKwang의 값이 true이어야 한다는 것. class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; SutdaDeck() { for(int i=0;i
[JAVA] default 메서드, static 메서드, 내부클래스, 익명클래스
·
프로그래밍/java
인터페이스 내에는 원래 추상 메서드만 선언 가능했지만.. JDK 1.8이후로 default 메서드와 static 메서드도 추가할 수 있게됨. 왜 추가되었을까? 조상클래스에 새로운 메서드를 추가하는 것은 별 일이 아니지만.. 인터페이스의 경우에는 좀 큰일임. 인터페이스에 메서드를 추가한다는 것은, 추상메서드를 추가한다는 것. 그럼 결국 해당 인터페이스를 구현한 모든 클래스 내에서도 추상메서드 새로 구현해야 함. 인터페이스가 변경되지 않으면 좋겠지만.. 아무리 설계를 잘 하더라도 언젠간 변경이 필요할 수 있음. ▶ 디폴트 메서드(default method) 등장 ▶ 새로 추가되어도 인터페이스를 구현한 클래스들을 변경하지 않아도 됨. 디폴트메서드는 앞에 default 키워드가 필요, 추상메서드와 달리 일반 메..
[JAVA] 인터페이스, 상속, 구현
·
프로그래밍/java
인터페이스(interface) 일종의 추상클래스로, 추상메서드를 갖지만 추상메서드보다 추상화 정도가 높다. 추상 클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드 + 상수만 멤버로 가질 수 있음. interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수s); } [인터페이스 멤버 제약사항] 1) 모든 멤버변수는 public static funal이어야 하고, 이를 생략할 수 있다. 2) 모든 메서드는 public abstract이어야 하며, 이를 생략할 수 있다. (단 static메서드와 default 메서드는 예외임) 생략된 제어자는 컴파일러가 자동으로 추가한다. int..
[JAVA] 추상 클래스와 추상 메서드 (abstract)
·
프로그래밍/java
추상 클래스 미완성 설계도. 미완성 클래스. 멤버의 개수에 관계된 것이 아니라 단지 미완성 메서드(추상 메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯, 추상 클래스로 인스턴스를 생성할 수 없다. 추상 클래스는 상속을 통해.. 자손 클래스에 의해서만 비로소 "완성"될 수 있다. - 클래스로서의 역할을 할 수없음. - 새로운 클래스를 작성하는 데 있어서 바탕이 되는 조상 클래스로서 의미를 갖는다. - 아무 것도 없는 상태에서 시작하는 것보단.. 완전하지 않더라도 어느정도 틀이 존재하는 상태에서 시작하는 것이 乃 abstract class 클래스이름 { .... } 추상 메서드 [ 메서드 = 선언부 + 구현부 ] 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추..
[JAVA] 매개변수의 다형성, 객체 배열과 벡터
·
프로그래밍/java
매개변수의 다형성 참조변수의 다형적인 특징은 매개변수에도 적용된다. class Product { int price; int bonusPoint; } class Tv extends Product {} class Computer extends Product {} class Buyer {//Product를 구매하는 구매자 int money = 1000; int bonusPoint = 0; //물건을 구매하는 메서드 } Buyer 클래스에 물건을 구입하는 기능의 메서드를 추가할 것. Tv를 사는 경우, void buy(Tv t) { ... } Computer를 사는 경우, void buy(Computer c) { ... } 이렇게 되면 제품의 종류가 늘어날 때마다 Buyer 클래스에는 새로운 buy 메서드를 추..
[JAVA] 참조변수의 형변환
·
프로그래밍/java
참조변수의 형변환 기본형 변수와 같이, 참조변수 또한 형변환이 가능함. 조건: 서로 상속관계에 있는 클래스 사이에서만 가능하다. - 자손타입 참조변수 → 조상타입 참조변수 - 조상타입 참조변수 → 자손타입 참조변수 class Car { } class FireEngine extends Car { } class Ambulance extends Car { } 위와 같이 클래스가 존재하는 경우, Car ↔ FireEngine Car ↔ Ambulance FireEngine (불가능) Ambulance class Car { } class FireEngine extends Car { } class Ambulance extends Car { } FireEngine f = new FireEngine();// 인스턴스 ..
[JAVA] 다형성(polymorphism)
·
프로그래밍/java
다형성(polymorphism) 여러가지 형태를 가질 수 있는 능력. = 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함. = 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 함. class Tv { boolean power; int channel; void power() { power = !power; } void ChannelUp() { ++channel; } void ChannelDown() { --channel; } } class CaptionTv extends Tv { String text; void caption(String text) { Sustem.out.println(text); } } 지금까지는, 생성된 인스턴스를 다루기 위해 인스턴스 타입과 일치..
[JAVA] 패키지와 import, 제어자, 겟터와 셋터
·
프로그래밍/java
패키지 = 클래스의 묶음 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있다. 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있음. EX) String 클래스의 실제 이름은 java.lang.String이다. = > java.lang 패키지에 속한 String 클래스라는 의미 (lang은 java 패키지의 하위패키지) 패키지 선언문 - 반드시 소스파일에서 주석과 공백을 제외한 첫번째 문장으로서 존재햐아 함. - 하나의 소스파일에 단 한번만 선언 가능 - 해당 소스파일에 포함된 모든 클래스나 인터페이스는 선언된 패키지에 속함. - 소문자 권장 이름없는 패키지(unnamed package) 모든 클래스는 반드시 하나의 패키지에 포함되어야 함. 그런데 패키지 딱히 선언 ..