학원 것 이해하고 추가하기!
// Demo3
package day2_3;
public class DemoControl3 {
public static void fff (Controllable a) { //@@ 이 메소드
if(a instanceof NoteBook) { // 2. 인스턴스오브를 해보면 되지
NoteBook ab = (NoteBook)a;// @@1. 만약, tv 객체라면 안되는데 타입 어떻게 할래?
}
else if (a instanceof Tv) {
Tv ab = (Tv)a;
}
}
public static void main(String[] args) {
// @ 인터페이스 타입 = 구현 객체 // up- casting 자동인 경우임
Controllable c = new Tv();
c = new NoteBook(); // 컨트롤러블, 리페어 등의 같은 부모를 갖고있으니까
// -> c. 해봐야 노트북소유는 안보이고, 컨트롤러블에 해당하는 애들만 보여짐
c.turnOn();
// @ 구현 객체 타입 = (구현 객체 타입) 인터페이스 타입 // down-casting 수동
NoteBook n = (NoteBook)c;
n.turnOn();
// @@ 다형성 : 다양한 형태로 존재, 부모 타입으로 자식 객체를 보관하는 기법
// 사용 : 부모와 자식이 메소드를 가질 때)(override) 부모 타입으로 해당 메소드를 호출하면
// 실 객체의 메소드가 자동으로 호출된다. (따로 타입캐스팅으로 타입 변환과정이 필요 없음)
// 만약에... 실 객체만 가지고 있는 메소드가 필요할 때는 해당 타입으로 캐스팅 해줘야 하는데...
// 어떤 객체가 들어 있는지 모른다.
// // @@@ 경우1) 상속 받아서 만든 클래스가 자주 사용할 애면 원래대로 하면 되고
// class OnlyOnce extends Parent{
// // 오버라이딩 메소드
// //
// }
// Parent p = new OnlyOnce ;
//
// // 경우2) 그게 아니라 한 번 쓰고 말 것 같으면 굳이 상속해줘야 하니까 클래스를 만들지 않고
// // 익명 클래스 만들면 됨
// Parent p = new Parent ;
}
}
package day2_3;
// @@ 이해필요 여기 다!
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
//class aaa implements Comparator<Student>{ // 2. 그래서 만들어주고 오버라이딩 해줬음.
//
// @Override
// public int compare(Student o1, Student o2) {
//// return o1.jumsu - o2.jumsu ; // 3. 양수일때 오름차순, 음수일 때 내림차순으로 정렬해주는 기능!
//// return 2; // 3. return음수일 때 바뀌네?
//// return o1.name.compareTo(o1.name); //4. 이렇게하면 알파벳순으로도@
// return -(o1.jumsu - o2.jumsu); //6. @@1경우
// }
//}
public class StudentDemo {
public static void main(String[] args) {
// 5명의 학생 객체를 만들어서 리스트에 담아 보세요 동적배열
List<Student> st = new ArrayList<Student>();
st.add(new Student("b", 80)); // @@ 여기 이해@
st.add(new Student("c", 70));
st.add(new Student("d", 60));
st.add(new Student("e", 50));
st.add(new Student("f", 90));
System.out.println(st);
// 5. 리스트에 들어있는 학생데이터를 점수가 높은 순으로 정렬하고 출력해라 //@@1경우
// st.sort(new aaa()); // 1. sort는 매개변수로 compartor 있어야 한다고 원해함
st.sort(null);
System.out.println(st);
// -------- 이후 조금 있다가
// 리스트에 들어있는 학생데이터를 이름 순으로 정렬하고 출력해라//@@2경우
// 7. 이런 경우는 일회성이 낫잖아! 그래서 이걸 쓰는 거: 익명 클래스
st.sort(
new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.name.compareTo(o1.name);
}
}
);
System.out.println(st);
}
}
// 8. comparable 그 클래스는 정렬을 당할 수 있는 기능이 생기는 것
// 정렬 방법을 바꾸려면 comparator를 재정의해서 쓰면 됨