JAVA

2013년 7월 2일 강의내용.

닉넥임 2013. 7. 22. 09:03
반응형

Java_20130701.zip


 

inner class는 생략 

 



package com.daegu.java; 

// kr.ac.daegu.java.Father 
public class Father { 

    static protected String name;
    int age; 
    float money; 

    public Father() { 
        /* 
         * // protected Father(){ Father father = new Father(); 외부에서 위와 같이 호출하여 
         * 사용할 경우는 
         */ 
    } 

    // public void inherit() { // ; overriding가능 
    protected void inherit() { // ; overriding가능 
        System.out.println("아버지의 것을 상속하다."); 
    } 

}


package com.recruit.java; 

//패키지(package) 
//; interface, class(일반~, error, exception), enum 
//annotation 
import java.lang.*; 
//기본 패키지 -> 묵시적 선언 -> 사용 가능 ! 
import com.daegu.java.Father; 
//import kr.ac.daegu.java.*;  
//모든 구성요소를 "다(all)" 가져옴(import)  

// 분야별로 구분 
// Jabva 내장 패키지 
// + 사용자 정의 패키지 

/* 
 * import java.util.*; 
 * import java.sql.*; 
 * import javax.sql; 
 *  
 * import java.io.*; 
 * import java.net.*; 
 *  
 * import java.awt.*; 
 * import java.awt.event.*; 
 * import java.awt.applet.*; 
 *  
 * import com.tgusoft.erp.man 
 *  
 */ 

// public static class Son extends Father { //(x) 
public class Son extends Father {
    // public class Son extends kr.ac.daegu.java.Father { 
    // 굳이 import 하지 않아도 됨. 

    String name; 
    int age; 
    float money; 

    // implicit : 묵시적 
    // <-> explicit : 명시적 
    Son() { 
        // super(); 
    } 

    // 상속에 대한 명시가 없을 경우는 단독적인(자신의) 
    // 멤버 메소드로 간주함. 
    // void inherit() { 

    // } 

    @Override 
    public void inherit() { // (O) 
        // protected void inherit() { // (X) 
        name = ""; // 자신의 필드 
        // this.name=""; 
        super.name = ""; 
        // default 
        // 아버지의 필드 
    } 

    static void abcd() { 

    } 

    static {// static block(블럭) 
        System.out.println("static block입니다."); 
    } 

    /* 
     * 마치 main(static) 메소드에서 실행하는 것과 동일한 결과를 출력 단위 테스트(unit test)할 때 사용 main 
     * 메소드(소스)를 사용하지 않고도 모듈(modul) 테스트 가능 ! ex) jUnit : 단위 테스트 툴(tool) => 
     * TDD(Test Driven Development) 테스트 중심(주도) 개발 ; 개발일정 수립시 별도의 디버깅 기간(교정기간)을
     * 할당하지 않고 평상시에 늘 (단위)테스트를 하면서 개발하는 방법 -> 인건비 절감 효과, 피드백(feedback) 최소화 < - > 
     * 폭포수개발방법(water-fall 방식) 
     */ 

    /** 
     * @param args 
     */ 
    public static void main(String[] args) {
        // TODO Auto-generated method stub 

        Father father = new Father(); 
        // 부모 클래스의 객체를 생성할 경우에는 
        // 접근 제한자 조건이 public으로 맞추어져야 한다. 

        father.name = ""; // public ! -> 호출(사용) 가능 ! 
        // super.name = ""; //ststic 구문 -> super/this(x)
        // this.name=""; // static 구문 -> super/this(x) 

        // inherit(); // 정적 메소드만 호출 ! 
        // this.inherit(); // static 구문 -> super/this(x)

        Son son = new Son(); 
        son.inherit(); // (o) 

        abcd(); // static method 
        son.abcd(); 
        // 인스턴스(동적객체).~ : static way(x) -> 허용함 ! 
        Son.abcd(); 
        // 정석적인 static way 
        // 클래스 변수(정적 (객체) 변수).~ 

        // static 메소드/필드 
        // -> 기본 메모리-> 프로그램 종료시 소멸됨. 
        // 프로그램 실행 중 -> 소멸(destroy)(X) 
        // 종료시 소멸 -> 남용시 메모리 문제(leak)! 
        // : GC(garbage collector) 담당<= JVM 
        // : 동적 (객체) 변수"만" GC됨 ! 
        // -> Heap(자유 메모리 공간)으로 
        // 사용하던 메모리 주소 반환 
        // 중요한 부분(광역 상수, 정적 메소드, 패턴) 
        // 제작시에만 신중하게 사용 ! 

        // 중요한 부분(광역 상수, 정적 메소드, 패턴) 
        // 제작시에만 신중하게 사용 ! 

    } 

    // inner class의 경우는 static이 허용 ! 
    public static class InnseClass {

    }// 내부 클래스(inner class) 
        // 클래스 내부의 클래스 
        // ex) 임신중인 산모(class) 
    // = 아기(inner class)를 배속에 가지고 있다. 

}// Son class end 

 




 

반응형