JAVA/Java2021-2 (41) 썸네일형 리스트형 클래스 상속과 인터페이스 구현 함께 사용 extends 부터하고 implements 한다. package Basic_Grammar.chap3_OOP.ch12_inherit_interface; public class BookShelfTest { public static void main(String[] args) { Queue bookQueue=new BookShelf(); bookQueue.enQueue("토지1"); bookQueue.enQueue("토지2"); bookQueue.enQueue("토지3"); bookQueue.enQueue("토지4"); bookQueue.enQueue("토지5"); System.out.println(bookQueue.getSize()); System.out.println(bookQueue.deQueue());.. 여러 인터페이스 구현하기 자바의 다중 상속이 안되는 이유 : 다이아몬드 문제 (다중상속 받았을 때 모호성->안정성 중시) (인터페이스의 경우 다중상속이 가능) 여러 인터페이스 구현 (오픈마켓에서 손님이 판매자이자 구매자가 될 수 있는 상황이라 생각) package Basic_Grammar.chap3_OOP.ch11; public class CustomerTest { public static void main(String[] args) { Customer customer=new Customer(); customer.buy(); customer.sell(); customer.order(); customer.hello(); //upcasting Buy buyer=customer; buyer.buy(); buyer.order(); Se.. interface 여러가지 추가된 요소 (default 메서드, 정적 메서드, private 메서드) package Basic_Grammar.chap3_OOP.ch10; public class CalculatorTest { public static void main(String[] args) { int[] arr={1,2,3,4,5}; int total=Calc.total(arr); System.out.println(total); } } package Basic_Grammar.chap3_OOP.ch10; public interface Calc { double PI=3.14; int ERROR=-999999999; int add(int num1,int num2); int substract(int num1,int num2); int divide(int num1,int num2); int multiply(in.. 인터페이스를 활용한 다형성 구현(dao 구현하기) DAO : Data Access Object(데이터베이스에 접근하는 객체) 위의 예를 보면 똑같은 인터페이스를 이용하여 사용하지만 DB에 따라서 OracleDao, MysqlDao, MSsqlDao를 사용할 수 있다. package Basic_Grammar.chap3_OOP.ch09_interface_polymorphism.web.userInfo; import Basic_Grammar.chap3_OOP.ch09_interface_polymorphism.domain.userInfo.UserInfo; import Basic_Grammar.chap3_OOP.ch09_interface_polymorphism.domain.userInfo.dao.UserInfoDao; import Basic_Grammar.chap.. 인터페이스를 왜 사용하는가? 인터페이스가 하는 일 : 클래스나 프로그램이 제공하는 기능 구현 Server (서비스 제공) 사용하는 곳 (Client 프로그램) : 클라이언트 프로그램이 서비스를 다 알고 사용하는 경우도 있지만, 클라이언트가 서비스 interface(어떻게 구현되어 있는지 선언되어있는)를 보고 사용. -> 어떻게 구현되어있는지는 모를 수도 있음 ( 어떤 기능인지 알고 인터페이스를 이용하여 사용 ) 어떤 클래스가 특정 인터페이스 타입이라고 하면 그 객체는 인터페이스가 제공하는 모든 메서드를 구현했다는 의미 ex) JDBC (DB : Oracle, Mysql, MS-sql 을 이용하여 구현할 수 있다) Connection 필요 생성-> DB에 Statement -> ResultSet 인터페이스 구현은 해당 디비회사에서 각.. 인터페이스 모든 메서드가 추상메서드로 선언됨 (public abstract 생략해서 사용함) 모든 변수는 상수로 선언됨(public static final) Calc : interface (점선) Calculator : 구현하는 클래스 (일부 구현안한 추상 클래스) CompleteCalc : 상속(실선) 구현 다 함 package Basic_Grammar.chap3_OOP.ch08_interface; public class CalculatorTest { public static void main(String[] args) { Calc calc=new CompleteCalc(); int num1=10; int num2=2; System.out.println(calc.add(num1,num2)); System.out... 추상클래스(abstract class) 구현하기 추상(abstract) 구체적(concrete) 추상클래스란? : 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스 - 추상메서드가 포함된 추상클래스는 인스턴스 생성이 불가하다 new 생성 불가 (아래의 예시에서 Desktop클래스와 MyLaptop클래스만 인스턴스 생성이 가능하다) - 구현부가 다 있는 클래스를 abstract 키워드를 이용하여 추상클래스로 만들면 이 클래스는 상속만을 위한 클래스로 사용된다. 메서드 선언 : 변환타입, 메서드이름, 매개변수로 구성 메서드 정의 : 메서드 구현(implementation)과 동일한 의미 구현부 body를 가짐 왜 추상메서드를 만드는가? 공통으로 쓸 메서드는 구현 어떻게 쓸지 모르는 메서드는 추상메서드로 지정하.. 객체 지향 -4 DownCasting(다운캐스팅), instanceof : 원래 하위 인스턴스였던 것이 -> 자신의 클래스로 다운 캐스팅이 될 경우에만!!! (반드시 원래 타입으로 되돌려야하는 경우, 왠만하면 overriding된 함수만 쓰는 것이 일관성 있고 코드가 깔끔하다. package Basic_Grammar.chap3_OOP.ch05_downcasting; import java.util.ArrayList; public class AnimalTest { public void testDownCasting(ArrayList animals){ for (Animal animal:animals){ if(animal instanceof Human){ Human human=(Human) animal; human.readBook(); }else if (animal instanceo.. 이전 1 2 3 4 ··· 6 다음