JAVA/DAY 15 _ 23.09.06 (14) 썸네일형 리스트형 Interface review // interface : // 각 클래스가 공통 인터페이스를 구현함으로써 통일된 동작을 제공하고, 다른 클래스와 상호 작용할 수 있도록 함 // --> 상속 용도의 클래스..! 근데 일종의 계약이야. // --> 인터페이스를 구현하는(= 계약한) 클래스는 해당 인터페이스에 정의된 모든 메서드를 반드시 구현해야 힘 // --> 이때, implements 키워드를 사용하여 클래스가 특정 인터페이스를 구현한다고 선언한다!! // 이제 main에 클래스 대신 interface를 선언 --> 싹다 추상화임 // 인터페이스는 하위 클래스에서 구현될 '메소드만 선언하고, 구현은 하지 않는다' // ★★★ 메소드는 무.조.건. public!!! (일반적 표현방법 : public + return타입 + 매소드명 + (.. interface 활용ex - self // 하위티어에서 구현할 메서드를 선언하는 인터페이스 생성 interface Occupation{ String print();// --> 하위 티어에서 오버라이딩할 메서드라고 생각하자. } class Student implements Occupation{ private String name; private String doWhat; Student(String name, String doWhat){ this.name = name; this.doWhat = doWhat; } public String print() { return "이름 : " + name + ", 하는일 : " + doWhat; } } class Nurse implements Occupation { private String name; pr.. Abstract Class_ 스타ex활용 // Abstract Class : 클래스, 메서드 또는 속성을 추상적으로 정의할 때 사용 (= 정말 상속만을 위해 정의된 클래스.) // --> 추상 클래스는 객체를 직접 생성할 수 없으며, 하위 클래스에서 추상 메서드를 구현해야 함 // --> 추상 클래스는 상속과 다형성을 구현하는 데 사용됨 // Abstract Method : 메서드의 시그니처만 선언되고 메서드의 본문은 제공되지 않는다. // ★★★답정너 : abstract class를 상속받은 하위클래스는 무조건! abstract된 메서드를 오버라이딩 해야한다 ★★★ // --> 근데 abstract 잘안써^^...; 이유는 다음 클래스에서....ㅎ abstract class Unit{ int hp; int ap; int speed; //voi.. Overiding // 상속 + 다형성 + 오버라이딩 TIP : 문법과 런타임을 다르게 생각하자! class AAA{ int a1; int a2; void print() { System.out.println("AAA의 print메서드란다"); } void qqq() { System.out.println("AAA의 qqq메서드"); } } class BBB extends AAA{ void test() { System.out.println("BBB의 test메서드란다"); } // ★★★ 오버라이딩 문법 --> 하위 클래스가 상위 클래스의 메서드를 '재정의'하는 과정 //--> 상위 클래스의 메서드와 동일한 이름, 매개변수 목록, 반환 유형을 가져야 함 ★★★ // (메소드명, 파라메터, 리턴타입) void print() {.. 상속_array활용3 // Person 및 하위 클래스 정의 class Occupation{ private String name; public Occupation(String name){ this.name = name; } // 오버라이딩할 메서드 public String print() { return "이름 : " + name; } } class Student extends Occupation{ private String doWhat; public Student(String name, String doWhat) { super(name); this.doWhat = doWhat; } public String print() { return super.print() + ", 하는일 : " + doWhat; } } class Nur.. 상속_array활용2 // Person 클래스와 상속 받을 하위 클래스들 정의 class Person { private String name;// 공통 인스턴스 ★★★ public Person(String name) { this.name = name; } public String getDescription() {// 각 클래스에서 객체의 정보를 문자열로 반환하는 메서드 return "Name: " + name; // 각 하위 클래스에서 '오버라이딩하여 해당 클래스의 정보를 반환하도록 구현'됨 } } class Student extends Person { private String major;// 개인 인스턴스 public Student(String name, String major) { super(name);// super(.. 상속_array활용 class Student extends Person{ Student(int a, int b){ System.out.println("여기다가 사용자가 정보를 입력하면 a,b가 arr[0]에 들어가는 거겠지"); } } class Police extends Person{ int c1; } class FireMan extends Person{} // 학생4명, 경찰 5명, 소방관 3명.... --> 각각 배열을 만드는게 원래 내가하던것 // 1. 근데 이제 전~체를 묶어서 배열을 돌릴 수 있어. class Person{}// --> 2. Person으로 배열을 받으면 되겠지 public static void main(String[] args) { Person[] arr = new Person[10]; // 이.. Object class Object 클래스 : Java 클래스 계층 구조의 최상위 클래스이며, 모든 클래스의 슈퍼 클래스 // --> 따라서 Object 클래스의 참조 변수는 모든 객체를 참조할 수 있음 Object ref = new AAA(); // 2.이게 된다는 말임 (= Object가 참조타입인 변수들은 모든걸 받아낼 수 있다!!!) ref = 1; ref = "안녕"; ref = true; ref = new int[10]; ref = new Scanner(System.in); // Q.ref.method는 왜 안돼? // AAA class를 하위클래스로 받은거잖아, 상위는 하위클래스의 매소드를 호출 못하지?ㅎㅎㅎ; class AAA{/* extends Object*/// 1. 모든 클래스들은 Object를 상속받고있다.. 이전 1 2 다음