java - 看内部类教程看到一个public Destionation destionation(String str){} 这是什么鬼?
怪我咯
怪我咯 2017-04-18 09:03:26
0
1
828

教程在====下面,其中第二行
public Destionation destionation(String str) { 这句话是什么鬼,还有第三行是什么鬼?
Destionation 这是个类?还是个方法?
第三行那个类可以实现一个方法是什么鬼?好乱啊,有高手可以看懂到底什么意思吗?

============================================================================
网址在此http://wiki.jikexueyuan.com/project/java-enhancement/java-eight.html
四、局部内部类 四、局部内部类
有这样一种内部类,它是嵌套在方法和作用于内的,对于这个类的使用主要是应用与解决比较复杂的问题,想创
建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类,局部内部类
和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法和属性中被使用,出了该方法和属性就
会失效。
对于局部内部类实在是想不出什么好例子,所以就引用《Think in Java》中的经典例子了。
定义在方法里:

public class Parcel5 {
    public Destionation destionation(String str) {
        class PDestionation implements Destionation {
            private String label;

            private PDestionation(String whereTo) {
                label = whereTo;
            }

            public String readLabel() {
                return (label);
            }
        }

        return (new PDestionation(str));
    }

    public static void main(String[] args) {
        Parcel5 parcel5 = new Parcel5();
        Destionation d = parcel5.destionation("chenssy");
    }
}

定义在作用域内:

public class Parcel6 {
    private void internalTracking(boolean b) {
        if (b) {
            class TrackingSlip {
                private String id;

                TrackingSlip(String s) {
                    id = s;
                }

                String getSlip() {
                    return id;
                }
            }

            TrackingSlip ts = new TrackingSlip("chenssy");
            String string = ts.getSlip();
        }
    }

    public void track() {
        internalTracking(true);
    }

    public static void main(String[] args) {
        Parcel6 parcel6 = new Parcel6();
        parcel6.track();
    }
}
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(1)
小葫芦

1,PDestionation是內部類別
2,內部類別可以定義在方法內部
3,並不是這個類別實現了destionation方法,注意這一行“return (new PDestionation(str));”,這才是該方法的方法體。

附1:PDestionation是Destionation類的子類,建議先看看《Thinking in Java》
附2:Parcel是包裹,Destionation是目的地,每一個Parcel都有一個自己的Desctionation,英文很重要!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板