Java 익명 클래스

별의개발자커비·2023년 2월 25일
0

Java

목록 보기
53/66
post-thumbnail

학원 것 이해하고 추가하기!

// 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를 재정의해서 쓰면 됨

https://limkydev.tistory.com/226

https://www.google.com/search?q=java+%EC%9D%B5%EB%AA%85%ED%81%B4%EB%9E%98%EC%8A%A4+new+Comparator&sxsrf=AJOqlzXxiG9poI8MYUyQeQvMQrZGL1FZfA%3A1677308226701&ei=QrH5Y7GqKqbi2roP9PibuAE&ved=0ahUKEwix05-IjLD9AhUmsVYBHXT8BhcQ4dUDCA8&uact=5&oq=java+%EC%9D%B5%EB%AA%85%ED%81%B4%EB%9E%98%EC%8A%A4+new+Comparator&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCCEQoAE6CggAEEcQ1gQQsAM6BwgAEB4Q8QQ6BAgAEB5KBAhBGABQXFiGA2D1B2gBcAF4AIABlwGIAY4CkgEDMC4ymAEAoAEBoAECyAEKwAEB&sclient=gws-wiz-serp

0개의 댓글