# 익명 내부 클래스 1) 일반적인 형태 : 객체 = new 인스턴스(); 2) 익명 클래스 객체 = new 인스턴스(){ 해당인스턴스가 가지고있는 특정 메서드를 재정의해서 쓸수있다 } ; {} : 클래스의 바디 (1) 인스턴스가 없으면 만들 수 없다(숙주가 필요해) - 인스턴스에 기생해 있다 (2) 기존 클래스가 갖고 있는 메서드를 "재정의" 하기 위해서 익명클래스를 사용한다. #실습 package anonmousex; abstract class Car{ abstract void run(); } class Bus extends Car{ void run(){ System.out.println("경로를 따라 달린다"); } } class Taxi extends Car{ @Override void run()..
: inner 클래스 - 안드로이드 에서 주로 쓰임 1. instance 이너 클래스 2. local 이너 3. static 이너 4. (anonymous) 익명 이너 클래스 (1번과4번을 위주로 공부) #기본 구조 class Person{ Eye eye; } class Eye{} ------------------ class Person{ class Eye{ // 내부 클래스 } } 1. instance 이너 클래스 (1) instance 사용 package instanceex;class Outer{ //타입 변수 int num; // 인스턴스 변수 //인스턴스 내부 클래스 (instanceInner class)-->타입의 역할 수행 class Value{ int val1; int val2;..
(1) 객체 비교 a.equals(b) 같다(true) | 다르다(false) package equalsex; class Value{ int num; } public class EqualsTest { public static void main(String[] args) { Value val1 = new Value(10); Value val2 = new Value(10); package equalsex; class Value{ int num; Value(int n){ num=n; } } public class EqualsTest { public static void main(String[] args) { Value val1 = new Value(10); Value val2 = new Value(10); }..
패키지 - 클래스의 카테고리역할 프로젝트 - 외장하드 (여러 파일 ---- 여러개의 폴더로 분류 ) 패키지 -- 여러 클래스 java.lang 패키지의 특징 : import가 필요없는 클래스들의 모임 1. Object 1) 최상위 클래스 package objectex; class MyType /*extends object*/{ } public class ObjectTest { void a(){ System.out.println("안녕"); } int b(){ return 10; } int c(int a, int b){ return a+b; } public static void main(String[] args) { ObjectTest obj = new ObjectTest(); obj.a(); // 안녕출..
1. 다형성 부 모= 자식 ; ▷ 다형성 - 다양한 상태(모양) ▷ 하나의 이름에 대하여 여러가지 설정을 담고 있는 상태 "다양하다" ▷ 메서드가 상속을 하다보면 여러개의 기능으로 재정의 될 수 있다. ▷ 한 이름에 여러개의 재정의된 메서드를 사용하고 싶을 때 다형성이라는 문법을 적용하면 된다. --> 자식 재정의 메서드가 호출된다 ( 재정의를 해놓지 않았으면.. 그냥 부모가 호출하면 된다 ) #실습 package polyex; class Phone{ void call(){ System.out.println("전화를 걸다"); } } class Phone2G extends Phone{ void call(){ super.call(); System.out.println("단축번호 기능을 이용해서 전화를 걸다..
* 재정의 ▷ 상속을 받아서 부모의 메서드를 사용하다보면 본의 아니게 메서드의 내용을 변경시켜서 사용해야 될 때가 있다. ▷ 기존 메서드의 이름은 그대로 유지(파라미터까지)하면서 바디의 내용만 {} 바꿔서 사용하는 것을 "재정의" 라고 한다. 부모클래스--> void print(){ syso("모니터 출력할래"); } 자식클래스--> void print(){ //명시적으로 하나 만든다. : 재정의 한다. (override) syso("프린터에 인쇄할래"); } * 이름은 똑같이 유지하 되, 내용을 변경시켜서 사용한다. 그럼, 부모의 모니터 출력 메서드도 사용할 수 있고 자식이 재정의한 프린터 인쇄 메서드도 사용할 수 있게된다. * 어떻게 하면 모니터 출력인지 프린터 인쇄인지를 구분할까? * 기본 방침은 ..
∨ 객체 지향언어에서 클래스를 다루는 중요한 문법 중에 하나! - 상속 ① 재산을 자식에게 물려주다 ② 클래스에서는 재산이 변수와 메서드이다. ③ 다른 클래스에게 변수와 메서드를 사용할 수 있도록 한다 class A{ } class B extends A{ } - extends : 확장하다 ∨ B는 A를 "확장"시켰습니다. (A의 재산을 B한테 줄테니 B는 그 재산을 바탕으로 새로운 변수와 메서드를 추가시켜서 사용해라) - class A{ //부모클래스, 조상, super(*), 상위, base, void draw(){} } class B extends A{ //자식클래스, 자손, sub, 하위, derived //여기 없는데?? -> 그래도 가능하다 "상속" void paint(){} } -- B로 인스..
static 키워드 1. 사용처 : ⑴ 인스턴스 변수 앞에 붙인다. ⑵ 메서드 앞에 붙인다. ⑶ 내부 클래스를 만들때, 클래스앞에 붙일 수 있다. ⑷ 상수 만들 때도 붙인다. 2. 기능 : 인스턴스(메모리에 올리는 것)가 컴파일 단계에서 발생한다. (new 하기 전에 미리 렘에 올라가게 된다) 3. 효과 : 인스턴스들이 "공유"하는 데이터를 보관하게 된다. 4. 해석 : "미리 만들어진~", "공유 하는 값" "우리 거" ( 인스턴스 변수는 각각의 개개인) Integer.parseInt(""); //클래스 메서드라 부른다. #실습 1) package staticex;class ClassBan{ static String ban="A"; // 인스턴스 변수가 아닌 클래스 변수이다 ( 인스턴스가 만들어 질때마..
#실습(복습) package contructorex; class TvDrama{ private String title; private String actor; private int stYear,stMonth,stDay; private int endYear, endMonth, endDay; //contructor public TvDrama(String title, String actor) { super(); this.title = title; this.actor = actor; } public TvDrama(String title, String actor, int stYear, int stMonth, int stDay) { super(); this.title = title; this.actor = acto..