목록프로그래밍언어 (42)
꿈 많은 사람의 이야기
중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스를 말한다. 인터페이스를 클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 package Study_myself_3_from_390; class Button2 { OnClickLisnter listner; void setOnClickListener(OnClickLisnter listener) { this.listner = listener; } void touch()..
클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스와 관계를 맺을 경우에는 관계 클래스를 클래스 내부에 선언하는 것이 좋다. 중첩 클래스란 클래스 내부에 선언한 클래스를 말하는데 이 것을 사용하면 두 클래스의 멤버드을 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. 선언 위치에 따른 분류 선언 위치 설명 멤버 클래스 인스턴스 맴버클래스 class A{ class B{ } } A 객체를 생성해야만 사용할 수 있는 B 클래스 (Inner Class) 정적 멤버 클래스 class A{ static class B { } } A 클래스로 바로 접근할 수 있는 B 중첩 클래스 (Nested Class) 로컬 클래스..
자바스크립트에서 제공해주는 Math 기능은 다음과 같이 대표적인게 있다. 함수 또는 상수 설명 PI PI 상수. 3.141592....round( ) 가장 가까운 값을 반환 pow( ) 제곱 sqrt( ) 제곱근 abs( ) 절대값 ceil( ) 가까운 up의 수 floor( ) 가까운 down 수 sin( ) 싸인 함수 cos( ) 코싸인 함수 min( ) 최솟값 max( ) 최댓값 random( ) 0 ~ 1까지의 난수 생성 사용법은 아래와 같다. Math.PI; Math.round(4.7); // 5 가까운 값 Math.round(4.4); // 4 가까운값 Math.pow(8, 2); // 64 제곱 Math.sqrt(64); // 8 제곱근 Math.abs(-4.7); // 4.7 절대값 Mat..
매우 간단한 계산기 만들기 예제이다. 뭐 방법은 여러가지 방법이 있겠지만 본인은 본인 편한데로 했다 Title .btn{ width: 50px; height: 50px; font-size: 18pt; } #calc{ width: 150px; } input#result{ width: 150px; height: 30px; border: 1px solid blue; border-radius: 5px; } function getById(str) { return document.getElementById(str); } var result = getById('result'); var butns = getById('butns'); var arrEvent = new Array(); //배열을 생성한다. 여기에 각 아이..
인터페이스에선 추상 메소드를 빼고 디폴트 메소드도 존재한다. 디폴트 메소드는 인터페이스에서 바로 사용할 수 없고 또한, 추상 메소드가 아닌 인스턴스 메소드이므로 구현 객체가 있어야 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 interface RemoteControlIn { //상수 int MAX_VOLUME = 10; int MIN_VOLUME = 0; //추상 메소드 void turnOn(); void turnOff(); void setVolume(int volume); //디폴트 메소드 default void setMute(boolean mute) { if(mute) { System..
객체를 직접 새성할 수 있는 클래스를 실체 클래스라고 하면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다. 추상 클래스가 부모이고 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성을 가질 수 있다. 이 추상 클래스의 용도는 첫째, 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적이다. 실체 클래스를 설계하는 사람이 여러 사람일 경우 실체 클래스 마다 필드와 메소드가 제각기 다른 이름을 가질 수 있다. 이러한 케이스를 방지하기 위해 상속할 클래스를 만들어 필드와 메소드를 통일시킬 수 있다. Phone 추상 클래스를 상속하는 Telephone과 SmartPhone은..
instanceof는 객체 타입을 확인하는 연산자이다. 이 연산자는 부모 변수가 참조하는 객체가 부모 객체인지, 자식 객체인지 확인 할 수 있다. boolean result = 객체 instance of 타입 즉 좌항의 객체가 우항의 인스턴스 이면 즉, 우항의 타입으로 객체가 생성되었다면 true를 반환한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 class Parent2 { } class Child2 extends Parent2 { } class InstanceofExample { public void method..
클래스에서 자동 타입 변환은 다음과 같은 조건에서 일어난다. 부모 클래스 변수 = 자식 클래스 타입 일때 자동 타입 변환이 일어난다. 예를 들어 다음과 같은 상황이라 가정하자 이와 같은 상황일때 Cat cat = new Cat(); Animal ani = cat; 또는 Animal ani = new Cat(); 와 같이 타입 변환으로 객체를 생성할 수 있다. 위와 같은 상황에서 메모리 상태를 그림으로 묘사하면 와 같이 생성이 된다. 즉 변수 타입만 다를뿐 동일한 객체를 참조하고 있다. 위와 같은 상태에선 B b= new B(); C c= new C(); D d= new D(); E e= new E(); A a1 = b; (가능) A a2 = c; (가능) A a3 = d; (가능) A a4 = e; (가..
상속이란, 하위 클래스(자식 클래스)가 상위 클래스(부모 클래스)의 멤버를 사용할 수 있는 것이다. 즉 부모는 자식에게 자신의 멤버를 제공해준다. 자식은 부모에게 상속 받은것 + 자신의 것을 사용할 수 있다. 상속은 클래스를 재사용하기 때문에 코드의 중복을 줄여준다. 또한 개발의 시간을 단축시킬 수 있어 매우 유용하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class A { int a = 0; public void method1() { } } class B extends A { public void method1() //부모 메소드 사용 { a = 5;// 부모 필드 변수 사용 } //부모의 메소드를 자식이 재정의함 -> 오버라이딩 } Colored by ..
라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근 할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다. 자바는 이러한 기능을 구현하기 위해 접근 제한자를 제공하고 있다. 접근 제한자는 public, protected, dafault, private와 같이 네 가지 종류가 있다. 각 특징은 밑의 표와 같다 클래스 내부 같은 패키지 서브 클래스 다른 패키지 public o o o o protected o o o x default o o x x Private o x x x 말그대로 public은 다 접근 가능하고 protected는 다른 패키지에선 접근이 불가능하고 default는 서브(자식) 클래스와 다른 패키지에서 접근이 불가능하다. 하지만 만약 같은..