jQuery - <select>태그의 선택 된 값 가져오기.

웹 & 안드로이드/HTML5|2013. 10. 12. 16:50

$('select#ban').val()

 

 

// 이건 input type="select" 만 되나보다..

$('select#ban:selected').val()

 

 

 

댓글()

jQuery - radio check된 값 받기.

웹 & 안드로이드/HTML5|2013. 10. 12. 15:18
$("input:radio[name=radio_name]:checked").val()

댓글()

View - EditText와 inputType속성의 종류(EditText 종류)

웹 & 안드로이드/Android|2013. 10. 8. 14:52

EditText

-텍스트를 입력, 수정 할 수 있는 텍스트뷰.


1
2
3
4
5
6
<EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="none"
            android:text="none" />



-android:inputType 속성 값 종류


 속성 값

EditText에 입력 가능한 값 

설명 

 none

 모든 문자, 모든 기호 ,숫자

 다른 톡징이 없는 기본 EditText. 입력 폼안에 줄 바꿈이 가능하다.

 text

 none과 같으나 줄바꿈이 불가능.

 textCapCharacters

 모든 입력된 영문이 대문자로 입력이 된다.

 textCapWords

 단어의 첫번째 영문이 대문자로 입력된다.

 textCapSentences

 문장의 첫번째 영문이 대문자로 입력.

 textAutoCorrect

 입력된 단어를 올바른 단어로 수정할 수 있다.

 textAutoComplete

 단어를 입력중에 완성된 단어를 표시 할 수 있다. 

 textMultiLine

 입력 폼에 줄 바꿈이 가능하나 따로 설정하지 않으면 단일 줄의 텍스트로 제한됨.

 textImeMultiLine

 여러줄의 텍스트 입력가능. 키보드에 줄바꿈 키가 표시됨.

 textNoSuggestions

 입력할때 사전에 등록되어있는 어떤 단어도 표시하지 않는다.

 textUri

 URI를 입력.

 textEmailAddress

 이메일 주소를 입력.

 textEmailSubject

 이메일의 제목을 입력.

 textShortMessage

 짧은 메시지를 입력.

 textLongMessage

 긴 메시지를 입력.

 textPersonName

 사람 이름을 입력.

 textPostalAddress

 주소의 우편번호를 입력.

 textPassword

 비밀번호를 입력. 입력된 문자는 (*)로 표시.

 textVisiblePassword

 비밀번호를 입력. 입력된 문자가 보인다.

 textWebEditText

 텍스트를 입력. 웹 양식으로 제공된다.

 textFilter

 다른 텍스트를 필터링 하기 위한 문자를 입력.

 textPhonetic

 발음되는 발음문자를 입력.

 textWebEmailAddress

 이메일 주소를 입력. 웹 양식으로 제공.

 textWebPassword

 비밀번호를 입력. 웹 양식으로 제공.

 number

 숫자

 숫자를 입력 받는다.

 numberSigned

 숫자

 부호가 있는 숫자를 입력.

 numberDecimal

 .(점) 기호, 숫자

 소숫점이 있는 소수를 입력 받는다.

 numberPassword

 숫자

 숫자로 된 패스워드를 입력.

 phone

 - 기호, 숫자

 전화번호를 입력 받는다.

 datetime

 -, : 기호, 숫자

 날짜와 시간을 입력. 날짜는 -, 시간은 :로 구분.

 date

 - 기호, 숫자

 날짜를 입력.

 time

 : 기호, 숫자 

 시간을 입력.


댓글()

View - ProgressBar, SeekBar, RatingBar

웹 & 안드로이드/Android|2013. 10. 8. 10:15


1.ProgressBar



-예제 화면




프로그래스 바

- 프로그램이 어떠한 일을 진행할 때의 진행도, 혹은 로딩중 일 때를 나타내는 것.


 

-원모양으로 빙글빙글 돌며 로딩중이라는 것을 나타내는 프로그래스 바.

       다음은 다양한 크기의 프로그래스 바를 나타낸다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />
    
    <ProgressBar
        android:id="@+id/progressBar2"
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />
 
    <ProgressBar
        android:id="@+id/progressBar3"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:visibility="invisible" />



-예제

-버튼1을 클릭하면 원모양 프로그래스 바가 보이고 버튼2를 클릭하면 다시 사라짐.

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
public class MainActivity extends Activity {
    ProgressBar progressBar1;
    
    Button button1;
    Button button2;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        progressBar1 = (ProgressBar) findViewById(R.id.progressBar3);
 
        
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
 
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar1.setVisibility(View.VISIBLE);
            }
        });
        
        button2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar1.setVisibility(View.INVISIBLE);
            }
        });
    }
}






- 진행도를 나타내는 프로그래스 바.

  무언가를 다운받거나 하는 진행등을 나타낼때 사용.


1
2
3
4
5
6
7
8
<ProgressBar
        android:id="@+id/progressBar4"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:max="100"
        android:progress="0" />



-둘다 가질 수 있는 속성은 같지만 스타일에 따라서 진행도를 보여주는 것을 정할 수 있다.


-예제

-버튼3을 누르면 진행도가 증가하고, 버튼4를 누르면 진행도가 감소.

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
public class MainActivity extends Activity {
    ProgressBar progressBar2;
    
    Button button3;
    Button button4;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        progressBar2 = (ProgressBar) findViewById(R.id.progressBar4);
        
        button3 = (Button) findViewById(R.id.button3);
        button4 = (Button) findViewById(R.id.button4);
        
        button3.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar2.incrementProgressBy(5);
            }
        });
        
        button4.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar2.incrementProgressBy(-5);
            }
        });
    }
}




2.SeekBar



 - 예제 화면



 SeekBar

- 볼륨이나 색상지정 등 사용자가 드래그 할 수 있는 바.


-seekBar

1
2
3
4
5
6
<SeekBar
        android:id="@+id/redBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:progress="0"
        android:max="255" />



-예제

-seekbar에 색상을 지정하고 텍스트뷰의 색상이 변하도록 함.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class MainActivity extends Activity {
    SeekBar redBar;
    SeekBar greenBar;
    SeekBar blueBar;
    TextView redView;
    TextView greenView;
    TextView blueView;
    int red;
    int green;
    int blue;
    TextView resultView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        redBar = (SeekBar) findViewById(R.id.redBar);
        greenBar = (SeekBar) findViewById(R.id.greenBar);
        blueBar = (SeekBar) findViewById(R.id.blueBar);
        
        redView = (TextView) findViewById(R.id.redView);
        greenView = (TextView) findViewById(R.id.greenView);
        blueView = (TextView) findViewById(R.id.blueView);
        
        resultView = (TextView) findViewById(R.id.resultView);
        
        redBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                red = redBar.getProgress();
                redView.setText("red - "+red);
                resultView.setBackgroundColor(Color.rgb(red, green, blue));
            }
        });
        greenBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                green = greenBar.getProgress();
                greenView.setText("green - "+green);
                resultView.setBackgroundColor(Color.rgb(red, green, blue));
            }
        });
        blueBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {}
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                blue = blueBar.getProgress();
                blueView.setText("blue - "+blue);
                resultView.setBackgroundColor(Color.rgb(red, green, blue));
            }
        });
    }



3. RatingBar


-예제 화면 



-점수등을 별로 표시하여 나타내는 뷰.


Colored By Color Scripter

1
2
3
4
5
6
 <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="10"
        style="?android:attr/ratingBarStyleSmall" />



-예제 코드.


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
public class MainActivity extends Activity {
    RatingBar ratingBar;
    EditText total;
    EditText answer;
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ratingBar = (RatingBar) findViewById(R.id.ratingBar1);
        total = (EditText) findViewById(R.id.editText1);
        answer = (EditText) findViewById(R.id.editText2);
        button = (Button) findViewById(R.id.button1);
        
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int t = Integer.parseInt(total.getText().toString());
                int an = Integer.parseInt(answer.getText().toString());
                float score = (float)an/t*ratingBar.getNumStars();
                ratingBar.setRating(score);
            }
        });
    }
 


댓글()

안드로이드 - 진동 제어하기

웹 & 안드로이드/Android|2013. 10. 7. 12:41

-우선적으로 진동을 제어 할 수 있는 앱을 만들기 위해서는 퍼미션(권한) 부여가 필요하다.




-직접 코드를 입력하는 방법.

1
2
3
4
5
<manifest>
    
    <uses-permission android:name="android.permission.VIBRATE"/>
 
</manifest>

     -manifest 설정파일에 해당 코드를 입력하면 권한 설정이 된다.




- 진동하기 위해서는 진동을 제어하는 객체를 생성해야 한다.


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
public class MainActivity extends Activity {
    ImageButton button3;
    ImageButton button4;
    
    Vibrator vib;    
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
       button3 = (ImageButton) findViewById(R.id.imageButton3);
        button4 = (ImageButton) findViewById(R.id.imageButton4);
 
        vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
 
        button3.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                vib.vibrate(300);
            }
        });
        button4.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                vib.vibrate(new long[]{100, 300, 100, 500}, -1);
            }
        });
    }
}


-한번 진동 하게 할 수 있지만 Long[]을 통해 패턴을 줄 수도 있다. 또한 무한으로 패턴을 반복하는것도 가능하다.


vib.vibrate(진동하는 시간(밀리 세컨드));

vib.vibrate(진동 패턴, 반복 여부(0이면 한번, -1이면 무한 반복));

댓글()

안드로이드 - 사운드 재생하기.

웹 & 안드로이드/Android|2013. 10. 7. 12:32



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
public class MainActivity extends Activity {
     ImageButton button1;
     ImageButton button2;
     SoundPool soundPool;
     int soundDdok;
     AudioManager aMa;
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
        button1 = (ImageButton) findViewById(R.id.imageButton1);
        button2 = (ImageButton) findViewById(R.id.imageButton2);
        
        soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
        soundDdok = soundPool.load(getApplicationContext(), R.raw.ding, 1);
        aMa = (AudioManager) getSystemService(AUDIO_SERVICE);
        
        button1.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                soundPool.play(soundDdok, 1, 1, 0, -1, 1);
            }
        });
        button2.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View v) {
                soundPool.stop(soundDdok);
            }
        });        
    }
 



-사운드를 재생하기 위해서는 많은 클래스 사용이 필요하다.


SoundPool : 사운드를 담는 pool과 같은 것.

soundDdok : pool의 개념보다는 작은, 트랙같은 것.

이 둘은 외부 리소스 사운드를 이용할 때 사용.


AudioManager : 각자 안드로이드 시스템의 오디오매니져이다. 

사운드 효과, 볼륨등을 지정한다. 

안드로이드 내부의 사운드를 이용할 때 사용. 


댓글()

View - ImageButton, ImageView

웹 & 안드로이드/Android|2013. 10. 7. 12:25

-ImageView과 TextView은 거의 비슷하나 다른점은 이미지 대신 텍스트를 넣을 수 있는가 아닌가의 차이이다.
*ImageView는 그림만 들어간다.
*TextView은 텍스트와 그림이 들어갈 수 있다.
- Button도 이와 같다.

1
2
3
4
5
6
7
8
9
10
11
<ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/image1" />
        
<ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/b1" />


댓글()

View - Switch, RadioGroup(RadioButton)

웹 & 안드로이드/Android|2013. 10. 7. 09:18

1.Switch

- Togglebutton과 기능은 같다.

- API level 14이후에 나왔으므로 이전 버전은 사용 불가.

- ToggleButton과 다른점은 UI가 개선되었다는 점?(기능의 차이점은 모른다.. 알아봐야지)


xml

1
2
3
4
5
<Switch
        android:id="@+id/switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Switch" />


activity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends Activity {
    Switch sw;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sw = (Switch)findViewById(R.id.switch1);
        
        sw.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    Toast.makeText(getApplicationContext(), ""+isChecked, Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(getApplicationContext(), ""+isChecked, Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}


-toggle버튼과 같이 isChecked로 체크되어있는지 확인이 가능하다.



2. RadioGroup

-아무리 RadioButton을 만들어도 각자 개별의 이름을 가지기 때문에 이들을 묶어야 하는 것이 필요하다.

그것이 RadioGroup이다.


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
<RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp" >
 
        <RadioButton
            android:id="@+id/redRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="false"
            android:text="red" />
 
        <RadioButton
            android:id="@+id/blueRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="false"
            android:text="blue" />
 
        <RadioButton
            android:id="@+id/greanRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="false"
            android:text="grean" />
 
    </RadioGroup>

-RadioGroup 안에 RadioButton 3개가 묶여있다.


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
public class MainActivity extends Activity {
    RadioGroup radioGroup;
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
        textView = (TextView) findViewById(R.id.textView1);
        
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId){
                case R.id.redRadio:
                    textView.setBackgroundColor(Color.RED);
                    break;
                case R.id.blueRadio:
                    textView.setBackgroundColor(Color.BLUE);
                    break;
                case R.id.greanRadio:
                    textView.setBackgroundColor(Color.GREEN);
                    break;
                }                
            }
        });
    }


-액티비티로 호출할 때에는 RadioGroup를 호출한다.

 checkedId에 체크되어있는 RadioButton의 ID가 들어 있으므로 if나 switch로 비교하면 된다.

댓글()

IntegerArrayConverter - String배열을 int배열로 변환

 

commons-beanutils-1.8.3-bin (스트링 배열을 인트배열로 변환).zip

 

기존의 변환 방법

1
2
3
4
5
6
7
8
9
//스트링 배열을 인트 배열로 바꿔야 하는데 좀 복잡하다.
 
String[] str = request.getParameterValues("example_no");//스트링 배열을 받고..
int[] exampleNo = new int[str.length];
 
//이렇게 for문으로 풀어서 변환 작업을 해야 한다.
for(int i = 0; i<str.length; i++){
     exampleNo[i] = Integer.parseInt(str[i]);
}

 

 

 IntegerArrayConverter클래스를 이용.

1
2
3
4
import org.apache.commons.beanutils.converters.*;
 
String[] str = request.getParameterValues("example_no");
int[] exampleNo = (int[]) new IntegerArrayConverter().convert(null, str);

-convert()의 리턴형은 인트배열 내용이 담긴 오브젝트형이므로 다운캐스팅을 해줘야 한다.

 

 -이 외에도 여러가지 형 변환 클래스들이 존재한다. 

 

어찌보면 코드를 줄일 수 있지만 라이브러리 찾느니 그냥 변환 시키는게 더 좋을 수도 있다... 라이브러리 찾느라 한나절..

'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

쓰레드  (0) 2013.10.14
디자인 패턴  (0) 2013.10.14
내부클래스  (0) 2013.10.04
다형성 - 업캐스팅, 다운캐스팅  (0) 2013.10.02
다형성-인터페이스  (0) 2013.10.02

댓글()

내부클래스



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test {
    public static void main(String a[]){
        TestClass c = new TestClass();
        c.innerClass.test1();
    }
}
class TestClass {
    String a = "TestClass 클래스의 멤버 변수.";
    
    class TestInnerClass{
        String b = "내부 TestInnerClass 클래스의 멤버 변수.";
        
        public void test1(){
            //내부 클래스는 외부 클래스의 멤버를 자신의 멤버처럼 사용할 수 있다.
            System.out.println(a);
            System.out.println(b);    
        }        
    }
    //클래스의 입장에서 내부클래스는 자신의 안에 있는것이 아닌
    //외부에 있는 다른 클래스처럼 인식 하므로 내부 클래스를 호출 할 수 있는 방법이 있어야 한다.
    //그중 하나가 내부클래스를 멤버로 선언 하는 것이다.
    TestInnerClass innerClass = new TestInnerClass();
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Test2 {
    public static void main(String a[]){
        //외부 클래스를 먼저 선언후, 외부 클래스를 통해서 내부클래스를 선언 하는 방법이 있다.
        Test2Class c = new Test2Class();
        Test2Class.Test2InnerClass ic = c.new Test2InnerClass();
        
        ic.test1();
    }
}
class Test2Class {
    String a = "TestClass 클래스의 멤버 변수.";
    
    class Test2InnerClass{
        String b = "내부 TestInnerClass 클래스의 멤버 변수.";
        
        public void test1(){
            //내부 클래스는 외부 클래스의 멤버를 자신의 멤버처럼 사용할 수 있다.
            System.out.println(a);
            System.out.println(b);    
        }        
    }
}



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
public class Test3 {
    public static void main(String a[]){
        //본래는 직접적으로 호출이 불가능 하지만 스태틱 내부클래스는 직접 호출이 가능하다.
        Test3Class.Test3InnerClass c = new Test3Class.Test3InnerClass("");
        c.test1();
    }
}
class Test3Class {
    String a = "Test3Class 클래스의 멤버 변수.";
    static String c = "Test3Class 클래스의 스태틱 멤버 변수";
    static class Test3InnerClass{        
        public Test3InnerClass(String b) {
            super();
            this.b = b;
        }
        String b = "내부 Test3InnerClass 클래스의 멤버 변수.";
        
        public void test1(){
            //내부 클래스는 외부 클래스의 멤버를 자신의 멤버처럼 사용할 수 있다.
            //System.out.println(a);//내부 스태틱 클래스는 외부클래스의 멤버를 호출 할 수 없다.
            System.out.println(b);
            System.out.println(c);//스태틱 내부 클래스는 외부의 스태틱 멤버만 호출이 가능하다.            
        }        
    }
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test4 {
    public static void main(String a[]){
        Test4Class c = new Test4Class();
        //메소드 내에 선언된 내부 클래스는 외부에서 호출이 불가능 하다.
        //Test4Class.Test4InnerClass c1 = c.new Test4InnerClass();//에러!
    }
}
class Test4Class {
    String a = "Test4Class 클래스의 멤버 변수.";
    static String c = "Test4Class 클래스의 스태틱 멤버 변수";
    public void test4member(){
        //메소드 내에 선언된 내부 클래스.
        class test4InnerClass{
            String b = "test4InnerClass 내부 클래스의 멤버 변수.";
            public void test4InnerClassMember(){
                //메소드 내에 선언되었다 하더라도 외부 클래스의 멤버에 접근이 가능하다.
                System.out.println(a);
                System.out.println(b);
                System.out.println(c);
            }
        }
    }
}


댓글()