반응형
Class Diagram
생성자의 경우 +Manager(name:Sgring):void 이거보단
이렇게 << create >>+Manager(name:String):Manager 하는게 더좋다!
/*
* interface : 추상 메소드(abstract method) * ※ 추상 메소드 : 선언부는 있지만 구현부({ ...... }; 몸(BODY), * 구현하다 : implement, realize, refinement)는 없는 메소드 * * ex) void abcd();// 추상 메소드 * cf) void abcd() {}; // 일반 메소드 * * 생성자(X) * 일반메소드(X) * */ public interface Boss { // String name; //(x) ; 일반 class에서는 가능 ! // final static String name="사장님"; // 초기값(initial value) String name = "사장님"; // literal 변수 (o) // 권장사항! -> 인터페이스의 필드 // => final(상수) / static final(광역(정적: 고정 메모리 주소) 상수) = final static // Boss(){} ; (X) ; 생성자 허용하지 않음 ! // Boss boss = new Boss(); (X) // void abcd(){}; (X) ; 일반 메소드(X) void orderBoss(); // 추상메소드 // final void orderBoss(); //추상 메소드 // ; interface에서는 final(x) // 은닉성(캡슐화) : 메소드 구현/상속 금지 ! // final -> 추상 메소드로써의 의미 상실 ! // why) final -> 추상 메소드로써의 의미 상실 ! // abstract void orderBoss(); //가능 (O) }// end of interface
//public class Manager implements Boss public class Manager implements Boss { // final class Manager implements Boss {
public Manager() { } public Manager(String name) { } /* * @override : (추상 / 일반) 상속된 메소드를 재정의 하는 것을 나타내는 내부 메타데이터(annotation) ; * since JDK 1.5 (eclipse : actual JDK 1.6) ; 상속성 */ @Override public void orderBoss() { // public final void orderBoss() { // -> 상속/오버라이딩(overriding) 불가 ! : 은닉성(캡술화) // protected void orderBoss() { ; (x) // 가시성 (접근 제한자)의 범위는 줄어들어서는 안됨 ! // void orderBoss() { (x) ; default // private void orderBoss() { ; (x) System.out.println("orderBoss() : " + "지시를 구현하였습니다."); } /* * overriding(x), overloading(o) : 다형성 */ void orderBoss(String name) { } // 매개변수의 자료형/변수의 갯수 차별화 ! // 자료형(o), 변수명(x) -> 조건(x) // void orderBoss(String name2){ ;(x) // public void orederBoss(String name2) { ; (x) // void orderBoss(Object name2){ ;(o) // public void orderBoss(Object name2){ ;(o) public void orderBoss(String name2, boolean flag) { // void orderBoss(StringBuffer name2){ ;(o) // void orderBoss(StringBuilder name){ ;(o) } private void orderManager() { } }// end of class
/* * final class Manager implements Boss{ * => 상속 자체가 불가 ! : 은닉성(캡슐화) */ public class Clerk extends Manager { // 상속 -> 재정의(override) // Manager = > public final void orderBoss(){ // (x) why) final = > 상속금지 ! : 은닉성 // @Override public void orderBoss() { } // 상속 금지 -> 은닉성(캡슐화) // @Override // private void orderManager() { // } // 상속된 메소드(X) // 상속된 메소드 (X) -> "상속과 무관하게" 자기 자신의 메소드 private void orderManager() { } }// end of class
public class Test {
static void test1() { } void test3() { } static void test() { test1(); // 정적 메소드(italic) 호출 } public static void main(String[] args) { // TODO Auto-generated method stub // Manager manager = new Manager(); // 객체(인스턴스) (변수) 선언 + (동적 변수)할당 Manager manager; // 선언 manager = new Manager(); // 할당 manager.orderBoss(); // 객체(object, instance). 멤버들(필드/메소드) // ~.~ : 소속(has-a relation : 관계) test(); // static 메소드에서 "클래스 내부의" // 함수 호출(call function)시 // 호출되는 함수도 역시 "static"이여야 한다. // Boss boss = new Boss(); //(x) // interface 생성자(x) -> 객체(인스턴스) 안됨 (x) // instantiate(객체를 생성하다)(x) // Boss boss; // 문법적 오류(X) // boss = new Manager(); Boss boss = new Manager(); // 문법적으로 올바름(valid)! // boss.name; (x) // Boss.name=""; (x) // interface의 경우는 "interface의 필드"에 // 접근할 경우 "final" 키워드가 없어도 // final 처럼 간주한다 : 묵시적인 final // 대입 불가 -> why? (final) : 상수(constant) // 은닉성(캡슐화) System.out.println(Boss.name); System.out.println(boss.name); boss.orderBoss(); // }// close of main void test2() { test1(); // 정적 메소드(italic) 호출 test3(); // 일반 메소드 호출 } }// end of class
반응형
'JAVA' 카테고리의 다른 글
2013년 7월 2일 강의내용. (0) | 2013.07.22 |
---|---|
특수문자 도표(& 문자)(링크) (0) | 2013.07.18 |
접근 제어자 및 각종 지시자 비교 (0) | 2013.07.14 |
오버로딩(overloading)과 오버라이딩(overriding) (0) | 2013.07.14 |
Interface(인터페이스) (0) | 2013.07.14 |