자바의정석 19

컬렉션 프레임웍 List

ArrayList 기존의 vector를 개선한 것으로 구현원리와 기능적으로 동일 vector는 자체적으로 동기화 처리가 되어 있다 List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다. 테이터의 저장공간으로 배열을 사용한다.(배열기반) ArrayList의 메서드 ArrayList() 기본 생성자 ArrayList(Collection c) 매개변수로 어떠한 컬렉션을 주면 컬렉션을 저장하는 ArrayList ArrayList(int initialCapacity) 배열의 길이 예제 package sec02.exam01_arraylist; import java.util.ArrayList; import java.util.List; public class ArrayListExample { public..

JAVA 2022.09.27

객체지향 추상 클래스, 추상 메서드

미완성 설계도. 미완성 메서드를 갖고 있는 클래스 abstract class Player { // 추상클래스 (미완성 클래스) abstract void play(int pos); // 추상메서드 (몸통 {}이 없는 미완성 메서드) abstract void stop(); // 추상 메서드 } 다른 클래스 작성에 도움을 주기 위한 것 ( 인스턴스 생성 불가 ) Player p = new Player(); // 에러 추상 클래스의 인스턴스 생성 불가 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능 class AudioPlayer extends Player { void play(int pos) { /* 내용 생략 */ } // 추상메서드를 구현 void stop() { /* 내용 생략 */ } // 추상메..

JAVA 2022.09.26

객체지향 매개변수의 다형성 예제

class Product { int price; // 제품의 가격 int bonusPoint; // 제품구매 시 제공하는 보너스 점수 Product(int price){ this.price = price; bonusPoint = (int)(price/10.0); //보너스 점수는 제품가격의 10% } } class Tv1 extends Product{ Tv1(){ //조상클래스의 생성자 Product(int price)를 호출한다. super(100); //Tv의 가격을 100만원으로 한다. } // Object클래스의 toString()을 오버라이딩한다. puvlic String toString() { return "Tv"; } } class Buyer { // 고객 물건을 사는 사람 int money..

JAVA 2022.09.26

객체지향 instanceof 연산자

참조변수의 형변환 가능여부 확인에 사용. 가능하면 true를 반환. 형변환 전에 반드시 instanceof로 확인해야 한다. void doWork(Car c) { //참조변수 타입Car (Car c 대신 new Car(),new FireEngin()등 올수있다) if (c instanceof FireEngine){ //1. 형변환 가능한지 확인 FireEngine fe = (FireEngine)c; //2. 형변환 fe.water(); } } 더보기 형변환을 하는 이유는 인스턴스의 원래 기능을 모두 사용하려고. Car타입의 리모콘인 c로는 water()를 호출할수 없으니 리모콘을 FireEngine타입으로 바꿔서 water()를 호출 FireEngine fe = new FireEngine(); sysou..

JAVA 2022.09.26

객체지향 참조변수의 형변환

사용할 수 있는 멤버의 갯수를 조절하는것 조상 자손 관계의 참조변수는 서로 형변환 가능 class Car { String color; int door; void drive() { // 운전 하는 기능 sysout("drive, brrrr~") } void stop() { // 멈추는 기능 sysout("stop"); } } Car를 부모로하는 FireEngine class FireEngine extends Car { // 소방차 void water() { // 물을 뿌리는 기능 sysout("water"); } } 실행 코드 FireEngine f = new FireEngine(); Car c = (Car)f; // ok 조상인 Car타입으로 형변환 (생략가능) FireEngine f2 = (FireEn..

JAVA 2022.09.26

객체지향 접근 제어자(access modifier)

더보기 Prvate : 같은 클래스 내에서만 접근이 가능하다. (default) : 같은 패키지 내에서만 접근이 가능하다. protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다. public : 접근 제한이 전혀 없다. package pkg1; class Myparent { private int prv; // 같은 클래스 int dft; // 같은 패키지 protected int prt; // 같은 패키지 + 자손(다른 패키지) public int pub; // 접근제한 없음. public void printMembers() { // 같은 클래스 내부에선 모두 출력가능 System.out.println(prv); System.out.println(dft); Sys..

카테고리 없음 2022.09.26

객체지향 super() - 조상의 생성자

조상의 생성자를 호출할 때 사용 ( super와는 다르다 연관 없음 ) 조상의 멤버는 조상의 생성자를 호출해서 초기화 class Point { int x, y; Point(int x, int y){ this.x = x; this.y = y; } } class Point3D extends Point{ int z; Point3D(int x, int y, int z){ super(x, y); // 조상클래스의 생성자 Point(int x, int y)를 호출 this.z = z; // 자신의 멤버를 초기화 } } 생성자의 첫 줄에 반드시 생성자를 호출해야 한다. 그렇지 않으면 컴파일러가 생성자의 첫 줄에 super():를 삽입 클래스를 만들때 기본생성자 작성은 필수 class Point extends Obje..

JAVA 2022.09.26

객체지향 참조변수 super

객체 자식을 가르키는 참조변수. 인스턴스 매서드(생성자)내에만 존재 조상의 멤버를 자신의 멤버와 구별할 때 사용 public class Super { public static void main(String[] args) { Child c = new Child(); c.method(); } } class Parent { int x = 10; /* super.x */ } class Child extends Parent { int x = 20; //this.x void method() { System.out.println("x=" + x); System.out.println("this.x=" + this.x); System.out.println("super.x=" + super.x); } } ---------..

JAVA 2022.09.26