익명클래스는 앞에 있는 클래스를 상속받아서 만들어진 것을 앞에 클래스로 업캐스팅해서 사용하는 것! 업캐스팅할 수 밖에 없는 이유: 업캐스팅 안하려면 타입을 써줘야하는데, 무슨 타입인지 클래스 이름이 없어서 무조건 부모타입을 써줄 수 밖에 없음. 업캐스팅 하기 싫으면 익명클래스를 안 쓰면 됨. 익명클래스를 쓰는 이유 : 일회적으로 사용하기 위해 익명클래스가 자주 쓰이는 곳 : 반드시 오버라이딩을 해서 써야 하는 경우, 추상메소드 *요약정리* 클래스나 인터페이스를 상속받은 이름없는 클래스를 업캐스팅하여 사용하는 것으로 해석한다 따라서 새로운 멤버를 넣는 것은 무의미하다 오버라이딩하여 사용을 많이 하며, 일회성으로 사용하기 위해서 익명클래스를 활용한다
인터페이스 interface 작업의 틀 >> 추상메소드만 존재하는 추상클래스 추상클래스이기 때문에 인터페이스도 객체화x 상속할 때 : 클래스 자식클래스 extends 부모클래스{} 인터페이스 자식클래스 implements 부모클래스{} 자식클래스 implements 부모클래스, 부모클래스1, 2,....{} 여러 개를 동시에 상속받을 수 있다 자바는 원칙적으로 모호성이 발생할 수 있기 때문에 다중상속을 허용하지 않는다 그러나 인터페이스 문법이 추가되며 사실상 다중 상속을 허용하고 있다 인터페이스에서는 static final 변수; 추상메소드(); >>abstract를 생략해도 컴퓨터가 추상메소드라고 인식함. 인터페이스이기 때문에 사용가능하다 **static final 변수 static 변수는 모든 인스턴..
추상클래스 abstract class 추상메소드를 갖고 있는 클래스 추상메소드가 하나라도 있으면 추상클래스! 추상메소드 abstract method 메소드의 이름과 리턴타입만 선언되어있고, 기능은 정의되어 있지 않은 메소드 추상메소드는 중괄호가 없음 추상클래스를 상속받은 자식에게 오류가 나지 않게 해결하는 방법 1.추상메소드를 오버라이딩한다 2.자식도 추상클래스로 만든다 추상클래스는 메모리상에 미구현된 멤버가 존재하기 때문에 객체화가 불가능하다
JDK Java Development Kit : 자바 실행 시 필요한 라이브러리 파일 존재 JRE Java Runtime Evniorment : JVM을 생성하는 부분 JVM Java Virtual Machine : 자바 프로그램을 실행시켜주기 위한 목적, 실행할 수 있는 주체 JAVA언어로 만든 프로그램을 실행시킬 때 반드시 필요한 것 자바의 컴파일러이다 기본생성자를 만들어준다 JAVA를 사용하기 위해서 JDK(JRE, JVM 포함) 설치 하여야 함 개발 툴 : eclipse JVM의 구성 ClassLoader : 모든 클래스(코드)는 참조 순간에 동적으로 JVM에 연결되며 메모리에 로딩 Execution Engine : JVM은 Method Area의 Byte Code를 Execution Engine..
업캐스팅 / 다운캐스팅 : 부모-자식관계 클래스일 때만 가능!! 업캐스팅 : 자식타입 > 부모타입 자식타입을 부모타입으로 업캐스팅이 된다면 1.자식에서 새롭게 정의된 멤버를 사용이 불가능하다 2.자식에서 재정의된 메소드는 자식에서 재정의된 대로 동작한다 부모타입 변수 = (부모타입)자식객체; 다운캐스팅 : 부모타입 > 자식타입(X) 부모타입은 자식타입으로 캐스팅할 수 없다 다운캐스팅은 업캐스팅된 객체(원래 자식타입인 객체)를 다시 자식타입으로 되돌리는 행위 업캐스팅으로 인해 못 썼던 멤버들을 다시 활용할 수 있다 자식타입 변수 = (자식타입)업캐스팅된 변수;
오버라이딩(overriding)(재정의) 상속과정에서 재정의하는 것! 상속이 반드시 있어야 함. 상속관계에서만 발생 상속 과정에서 부모의 메소드를 자식에서 재정의하는 것 부모타입의 객체에서 메소드가 사용되면 부모에서 정의된 대로 실행 자식타입의 객체에서 메소드가 사용되면 자식에서 재정의된 대로 실행 메소드 이름 + ctrl + enter >> 자동완성 @override // 어노테이션 주석 : 컴퓨터에 설명하기 위한 주석 실수를 최소화 할 수 있음. 오버로딩(overloading)(중복정의) 메소드 이름은 같은데 매개변수의 갯수나 타입이 다른 경우 타입을 다르게 정의하는 것 함수 만드는 과정에서 나오는 것 이는 다형성(polymorphism)을 구성하는 요소이다. 다형성 : 하나의 모양으로 다르게 동작하..
객체를 만들어서 메모리에 등록시켜주는 것 >> ★객체화★ 클래스 내에 있는 정보를 메인 메소드에서 바로 가져다 쓸 수가 없으니 객체화를 통해 객체와 메인 메소드를 연결해서 지정한 변수명으로 클래스 내의 정보를 가져다 쓰고 객체화를 통해 메인 메소드 한 곳에서 여러 클래스의 정보를 사용할 수 있다 객체화 클래스명 변수명 = new 클래스명() 타입 객체(인스턴스) 메모리에 할당시켜주는 연산자 생성자 생성자 : 객체를 생성할 때 사용한다 메소드랑 똑같지만 이미 메모리에 객체를 등록시켜주는 기능이 정해져있기 때문에 return을 사용할 수 없고, '생성자'라고 부른다. 생성자가 없다면?? 클래스명 변수명; >> 값을 넣지 않고 변수 선언만 한 것임. 객체가 안 만들어진 상태.