package object; class Book implements Cloneable { // 인터페이스 Cloneable 를 상속받아야 한다. // 이클래스가 복제 가능하다고 명시해줘야 한다. String title; String author; public Book(String title, String author) { this.title = title; this.author = author; } public String toString() { return author + " , " + title; } // Clone() 은 메모리가 복제되기 때문에 그대로 메소드를 쓰면 된다. @Override protected Object clone() throws CloneNotSupportedException {..
전체 글
안녕하세요package object; class Student { public int studentNum; public String studentName; public Student(int studentNum , String studentName) { this.studentNum = studentNum; this.studentName = studentName; } public boolean equals(Object obj) { if(obj instanceof Student) { // Object 가 Student 의 객체 타입인지 확인한다. Student std = (Student) obj; // 이 obj를 다운캐스팅하고나서 if(this.studentNum == std.studentNum) { // stude..
package object; class Student { int studentNum; String studentName; public Student(int studentNum , String studentName) { this.studentNum = studentNum; this.studentName = studentName; } // System.out.println(Lee.equals(Shin)); 시 두 학생의 학번이 같으면 같은 학생이라는걸 equals() 로 재정의 한다. @Override public boolean equals(Object obj) { // Object 로 넘어오면 업캐스팅 자동형변환이 되니까 그다음 다운캐스팅을 하게 한다 if(obj instanceof Student) { /..
Object 클래스 자바의 여러 클래스들에 대해 알아볼것이다. JDK 에서 제공하는 많은 라이브러리가 있는데 다 볼수없지만 프로그램 할 때 중요하게 쓰이거나 활용도가 높은 클래스들 위주로 볼것이다. 기본클래스 이기도 하고 많이 쓰는 클래스 이다. 제네릭 프로그램 , 컬렉션 프레임워크 등 자바 JDK랑 관련된 자바 프로그램을 좀더 유연하게 사용할수있다. Object 클래스 모든 클래스의 최상위 클래스 Java.lang.Object 클래스에 속한다. 모든 클래스는 Object 클래스에서 상속받음 모든 클래스는 Object 클래스의 메소드를 사용할수 있다 모든 클래스는 Object 클래스의 일부 메소드를 재정의 하여 사용할수 있다 모든 클래스는 extends Object 하게 되어있다 컴파일러가 Object ..
Sort 인터페이스 생성 package schedulerex; public interface Sort { public void ascedning(int[] arr); // abstract 생략 public void descending(int[] arr); default void description() { // default 메소드 적어줘야 한다. System.out.println("숫자를 구현한 알고리즘 입니다."); } } 상속받아 구현한 BubbleSort 클래스 package schedulerex; public class BubbleSort implements Sort { @Override public void ascedning(int[] arr) { System.out.println("Bubbl..
인터페이스 Queue 에다가 메소드를 명세해 놓는다. package scheduler2; public interface Queue { void enQueue(String title); String deQueue(); int getSize(); void info(); } Shelf 클래스에 구현해 놓는다. package scheduler2; import java.util.ArrayList; public class Shelf { protected ArrayList shelf; public Shelf() { shelf = new ArrayList(); } public ArrayList getShelf() { return shelf; } public int getCount() { return shelf.size..
인터페이스의 요소들 ( 명세 , 설계도) 상수 : 선언된 모든 변수는 상수로 처리된다. 메소드 : 모든 메소드는 추상 메소드 이다. 디폴트 메소드 : 기본 구현을 가지는 메소드 구현하는 클래스에서 재정의 할수 있다.(java 8) 정적 메소드 : 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메소드(java 8) private 메소드 : 인터페이스 내에서 사용하기 위해 구현한 메소드 구현하는 클래스에서 재정의 할수 없다. 여러 개의 인터페이스 구현하기 인터페이스는 구현 코드가 없으므로 하나의 클래스가 인터페이스를 구현 할수 있다 디폴트 메소드의 이름이 중복되는 경우 재정의 한다. extends 키워드 뒤에 오는건 하나이다. Implements 뒤에 100개가 와도 상관이 없다. 인터페이스 상속 인..
인터페이스의 역할 은 ? 인터페이스는 클라이언트 프로그램에 어떤 메소드를 제공하는지 알려주는 명세 또는 약속 이다. 한 객체가 어떤 인터페이스의 타입이라 함은 그 인터페이스의 메소드를 구현했다는 의미이다. 클라이언트 프로그램은 실제 구현내용을 몰라서 인터페이스의 정의만 알면 그 객체를 사용할수있다 인터페이스를 구현해 놓은 다양한 객체를 사용한다 – 다형성 : JDBC 를 구현한 오라클, MSSQL 라이브러리 등이 있다. 라운드로빈 방식 차례대로 짧은 상담원 에게 배분한다던가 대기열이 긴다 해도 숙련도가 높은 상담원 등 우선 배분할수있는 정책들 배분을 하기위한 기능은 이미 정해져있을것이다. 스케쥴링에는 대기열에서 가져오는 getNextCall() 과 상담원의 전화를 가져오는 상담원 sendCallToAge..
package cartest; public abstract class Car { public abstract void start(); public abstract void drive(); public abstract void stop(); public abstract void turnoff(); final public void run() { // 템플릿 메소드 start(); drive(); stop(); turnoff(); } } 추상메소드를 가지는 추상 클래스를 생성합니다. final 로 지정된 템플릿메소드 run() 를 생성합니다. - 로직순서를 구현 package cartest; public class Sonata extends Car { @Override public void start() { ..