day 10-Javaオブジェクト向け(パッケージ/内部クラス/匿名クラス)
6011 ワード
10.01_オブジェクト向け(packageキーワードの概要と役割)(理解) A:どうしてかばんがあるの? バイトコード(.class)を分類格納 パッケージは実はフォルダ です.
B:パッケージのフォーマットを定義する packageパッケージ名; 多段包用(英語のカンマ)分かれば
10.03_オブジェクト向け(パッケージ付きクラスコンパイルと実行)(把握)
package com.baidu;
// A:package
// B:package java
// C: package,
class TestJava {
}
10.03_オブジェクト向け(パッケージ付きクラスコンパイルと実行)(把握)
//
javac -d . TestJava.java
//
java com.baidu.TestJava
```
###10.05_ (import )( )
* A:
* import
* ,
* B:
* import ;
* 。
* *, 。
```Java
// import
com.houwan.Person p = new com.houwan.Person("Hou",24);
System.out.println(p.getName()+"--->"+p.getAge());
// import
import com.houwan.Person;
Person p = Person("Hou",24);
// class / import / package
package( ) --> import( ) --> class
```
###10.06_ ( )( )
| | | ( + ) | ( ) | ( ) |
| :--------: | :--------: | :--------: | :--------: | :--------: |
| `private` | Y | | | |
| | Y | Y| | |
| `protected` | Y | Y|Y| |
| `public` | Y | Y | Y | Y |
###10.07_ ( )( )
* A: :
* :`private`, ,`protected`,`public`
* :`static`,`final`
* :`abstract`
* B: :
* : ,`public`
* :`final`
* :`abstract`
* :`public`
* C: :
* :`private`, ,`protected`,`public`
* :`static`,`final`
* :`private`
* D: :
* :`private`, ,`protected`,`public`
* :`public`
* E: :
* :`private`, ,`protected`,`public`
* :`static`,`final`
* :`abstract`
* :`public`
* F: :
* :`public static final`
* :
* `public static`
* `public abstract`
* `public final`
###10.08_ ( )( )
* A:
* B:
* a: , 。
* b: , 。
* . = . ;
```Java
class Outer { //
private int num = 10 ;
class Inner { //
public void method() {
System.out.println(" , .."+num);
}
}
}
//
Outer.Inner oi = new Outer().new Inner();
oi.method();
```
###10.09_ ( )( )
```Java
class Outer { //
private class Inner { //
public void method() {
System.out.println(" , ..");
}
}
// ,
public void print() {
Inner in = new Inner();
in.method();
}
}
```
###10.10_ ( )( )
```Java
class Outer { //
static class Inner { //
public void method() {
System.out.println(" ");
}
}
}
//
// : . = . ;
Outer.Inner oi = new Outer.Inner();
oi.method();
```
###10.11_ ( )( )
```Java
// : , 30,20,10。
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public void show() {
int num = 30;
System.out.println(???); // num
System.out.println(???); // this.num
System.out.println(???); // Outer.this.num
}
}
}
// :
new Outer().new Inner().show();
// ,
// : .this
```
###10.12_ ( )( )
* `final`
* `final` , ?
- , `final` , ,
- , , ,
- , `final` , , ,
* jdk1.8 , bug
```Java
class Outer { //
public void method() {
final int num = 10 ;
class Inner { //
public void print() {
System.out.println(" .." + num);
}
}
Inner in = new Inner();
in.print();
}
}
```
###10.13_ ( )
* A:
* 。
* B: :
* ** ** ** **。
* C: :
*
new (){
;
}
* D: ?
* 。
```Java
interface Protocol {
public abstract void print();
}
class Outer {
class Inner implements Protocol {
public void print() {
System.out.println(" ");
}
}
//
public void method() {
new Protocol() { // Protocol , , ,
public void print() {
System.out.println(" ");
}
}.print(); //
}
}
```
###10.15_ ( )
* A:
*
// ,
abstract class Person {
public abstract void show();
}
class PersonDemo {
public void method(Person p) {
p.show();
}
}
class PersonTest {
public static void main(String[] args) {
// PersonDemo method ?
PersonDemo pd = new PersonDemo ();
}
}
###10.16_ ( )
```Java
// ”HelloWorld”
interface Inter { void show(); }
class Outer { // }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show(); // , ,
}
}
// :interface public abstract , , public,
// : . (), , public static
// :
class Outer {
//
public static Inter method() {
return new Inter(){
public void show() {
System.out.println("xxoo");
}
};
}
}
```
*END。*
* 。*
* , , 。*
* , 。*
* , 。*