JAVA/DAY 15 _ 23.09.06 (14) 썸네일형 리스트형 TypeCasting AAA a1 = new BBB();// 우리는 이렇게 쓸일이 거의 없다. 쓸 수는 있다고! a1.testA();// 출력 : A의 매서드 BBB b1 = (BBB)a1; // 원래는 BBB b = a; 이거안되는데, 강제로 type casting해준거임 // (부모의 참조변수를 가져올때는 댓가가 필요하다구.) // BBB b1 = new BBB();--> b1.testB();// 출력 : B의 매서드 b1.testA();// 출력 : A의 매서드 // BBB b1 = new BBB();와 BBB b2 = (BBB) a;의 경우 // 모두 BBB 클래스의 객체를 가리키는 것이므로 BBB 클래스의 모든 메서드와 속성을 호출할 수 있다! // --> BBB객체를 a1으로 받아서 다시 b1에 넘겨주는게 그냥 B.. Polymorphism package p7; public class Main_polymorphism { public static void main(String[] args) { // 다형성 : 참조변수는 본인의 타입을 포함해서 모든 자손을 받을 수 있다. // 1. 일반적인 경우 AAA a = new AAA(); a.printA(); BBB v1 = new BBB(); BBB v2 = null;// 참조 주소에 null을 넣을 수 있으니까는~ // BBB b2 = new AAA();--> 이건 당연히 안되겠지. type mismatch double d = 1;// 이것도 type mismatch인데, 자동으로 type casting이된거임. // 2. 다형성의 경우 AAA aaa; aaa = new AAA();// 당연히 되는.. Basic // 어떠한 직업군들에 대한 클래스를 여러개 생성한다 // 이름, 나이라는 인스턴스가 계속 공통적으로 들어가지 class Person{ String name; int age; } class Student extends Person{ // --> 상속하는 클래스와 같은명의 변수를 안써도됨! (쓰면 오히려 머리아파..) //String name; //int age; int score; } class PoliceMan extends Person{ //String name; //int age; String grade; } class Lecture{ String name; int age; int career; } Final package p4; public class Main_example { public static void main(String[] args) { BBB b1 = new BBB(10);// 출력 : AAA의 기본 생성자, BBB의 int생성자 // 부모클래스의 기본생성자가 딸려온다! // if) super로 정의해주게되면 AAA의 int생성자, BBB의 int생성자가 출력된다. } } /*final*/ class AAA{ // class에도 final을 붙일 수 있다 // --> 이렇게되면 AAA는 누구에게도 상속해주지 못하는 클래스가 되는거임 // --> 나는 안쓸걸.... int v1; int v2; AAA(){ // 부모클래스의 기본 생성자는 없으면 안돼! 상속받는애가 생성자를 못만든다구 System.. Super package p3; public class Main_super { public static void main(String[] args) { // AAA a = new AAA(); BBB b = new BBB();// --> AAA의 생성자, BBB의 생성자아아ㅏ아 두개다 호출됨! // b.v2 ----> BBB의 변수임!!!.... 이렇게하지마세요~!~! b.test1();// --> 이것은 AAA의 메서드10 b.test2();// --> 이것은 BBB의 메서드20 System.out.println(b.v2);// 20 } } class AAA{ int v1; int v2; AAA (){ System.out.println("AAA의 기본 생성자"); } AAA(int v1){ this.v1 =v1; .. Interface Basic // 상속 + 다형성 + 오버라이딩 ---> 인터페이스! // 코드의 의도 : 결합도를 낮춘다 (너무 많이 의존하지 않도록) // --> 하나의 모듈을 변경할 때 다른 모듈에 미치는 영향을 최소화하고 버그를 줄이는 데 도움이됨 // --> 모듈 간의 강한 결합이 없으면 해당 모듈을 다른 프로젝트에서 더 쉽게 재사용할 수 있음 // --> 각 모듈이 독립적으로 작동하고 목적을 명확하게 수행할 때 코드를 이해하기 쉬워짐 class AAA{ int a1; int a2; void test1() { System.out.println("이것은 test1의 메서드"); } } // 상속 문법 : ~ extends + 상속받을 클래스명 class BBB extends AAA { int b1; int b2; } clas.. 이전 1 2 다음