博客
关于我
8.2 复用(protected+向上转型+final关键字+类的初始化)
阅读量:281 次
发布时间:2019-03-01

本文共 8072 字,大约阅读时间需要 26 分钟。

protected

???????????????????????????????????????????? protected ?????????????????????? private ???????????????????????????????protected ???????????

?????? protected ????????????????? private????? protected ????????????????

????

?????????????????????????????????????????????????????????????????????????

class Instrument {    public void play() {    }    static void tune(Instrument i) {        // ...        i.play();    }}// Wind objects are instruments// because they have the same interface:public class Wind extends Instrument {    public static void main(String[] args) {        Wind flute = new Wind();        Instrument.tune(flute); // Upcasting    }}

tune() ??????? Instrument ?????????? Wind ? main() ????tune() ???????? Wind ?????????????????????????????????????????????????????Wind ?????????? Instrument ????? Instrument ? tune ???????? Wind ??? tune() ????? Instrument ??? Instrument ??????????? Wind ????? Instrument ????????????

????????????????????????????Wind.java ?????

class Instrument {    public void play() {    }    static void tune(Instrument i) {        // ...        i.play();    }}class Wind extends Instrument {    public static void main(String[] args) {        Wind flute = new Wind();        Instrument.tune(flute); // Upcasting    }}

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????????????????

2.1 ?????????????

??????????????????????????????????????????????????????????????????????????????????? OOP ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

final ???

????????Java ???? final ?????????????????????????????????????????????????????????????????? final?

??????????? final ??????????????

3.1 final ????

????????????????????????????????????????

  • ?????????????
  • ?????????????????

????????????????????????????????????????????????????? Java ???????????????????? final ???????????????????

??? static ? final ???????????????????????

?? final ?????????????????????????????????final ????????????????final ???????????????????????????????????????????????????Java ?????????????????????????????????????????????????????????

3.1.1 ?? final

?? final ?????????? final ???????????? final ??????????????????????????????? final ???????????? final ??????????????

3.1.2 final ????

????????????? final ????????????????????????

class Gizmo {    public void spin() {    }}public class FinalArguments {    void with(final Gizmo g) {        //-g = new Gizmo(); // Illegal -- g is final    }    void without(Gizmo g) {        g = new Gizmo(); // OK -- g is not final        g.spin();    }    //void f(final int i) { i++; } // Can't change    // You can only read from a final primitive    int g(final int i) {        return i + 1;    }    public static void main(String[] args) {        FinalArguments bf = new FinalArguments();        bf.without(null);        bf.with(null);    }}

?? f() ? g() ??? final ??????????????????????????????????????????????????????????

3.2 final ????

?? final ?????????????????????????????????????????????????????????????????

?????? final ???????????????? Java ?????????????? final?????????????????????????????? final ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???? Java ???????????????????? hotspot ??????????????????????????????????? final ?????????????????? JVM ???????????????????????? final?

3.2.1 final ? private

????? private ????????? final???? private ???? final ????????????????

?????????????? private ?????? final ????????????????????????

class WithFinals {    // Identical to "private" alone:    private final void f() {        System.out.println("WithFinals.f()");    }    // Also automatically "final":    private void g() {        System.out.println("WithFinals.g()");    }}class OverridingPrivate extends WithFinals {    private final void f() {        System.out.println("OverridingPrivate.f()");    }    private void g() {        System.out.println("OverridingPrivate.g()");    }}class OverridingPrivate2 extends OverridingPrivate {    public final void f() {        System.out.println("OverridingPrivate2.f()");    }    public void g() {        System.out.println("OverridingPrivate2.g()");    }}public class FinalOverridingIllusion {    public static void main(String[] args) {        OverridingPrivate2 op2 = new OverridingPrivate2();        op2.f();        op2.g();        // You can upcast:        OverridingPrivate op = op2;        // But you can't call the methods:        //- op.f();        //- op.g();        // Same here:        WithFinals wf = op2;        //- wf.f();        //- wf.g();    }}

????????????????????????????????????????????????????????????????? private ??????????????????????????????????????????????????????????? public?protected ???????????????????????????????????????????????? private ?????????????????????????????????????????

3.3 final ???

?????? final?final ???????????????????????????????????????????????????????????????

class SmallBrain {}final class Dinosaur {    int i = 7;    int j = 1;    SmallBrain x = new SmallBrain();    void f() {    }}// - class Further extends Dinosaur {} // error: Cannot extend final class 'Dinosaur'public class Jurassic {    public static void main(String[] args) {        Dinosaur n = new Dinosaur();        n.f();        n.i = 40;        n.j++;    }}

????????????? final ???????????????????????????????

??????????????????????????????????????????????? final????????????????????????????????????????????????

Java ????????????????? Java 1.0/1.1 ? Vector ????????????????????????????????????????????? final?????? final ??????????[^1]???????????????????????????????????????????????????Stack ??? Vector???? Stack ?? Vector????????????????Java ?????????????????? Stack ?????????? final ???????

???Vector ??????????? addElement() ? elementAt() ??????????????????????????????????????? final ?????????????????????????????????????????????????????????????????????? Java ??? ArrayList ??? Vector?????????????????????????????????????? Vector?

Java 1.0/1.1 ????????????? Hashtable???? HashMap ????????? final ???????????????????????????????Hashtable ?? Vector ????????????????????????????????????????????????????????????????????????????????????

4 ???????

? Java ?????????????????????????????Java ?????????????????????????????????????????????????????????????????????????????????????????? static ????????????? static ????? static ?????????????????????????? static ?????????????

??????? static ?????????? static ??? static ??????????????????????????????static ??????????

4.1 ??????

??????????????????????????????

class Insect {    private int i = 9;    protected int j;    Insect() {        System.out.println("i = " + i + ", j = " + j);        j = 39;    }    private static int x1 = printInit("static Insect.x1 initialized");    static int printInit(String s) {        System.out.println(s);        return 47;    }}public class Beetle extends Insect {    private int k = printInit("Beetle.k.initialized");    public Beetle() {        System.out.println("k = " + k);        System.out.println("j = " + j);    }    private static int x2 = printInit("static Beetle.x2 initialized");    public static void main(String[] args) {        System.out.println("Beetle constructor");        Beetle b = new Beetle();    }}

??? java Beetle???????? Beetle ?? main() ????? static ???????????? Beetle ?????????? Beetle.class ???????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????? Insect?? static ????????????????????????????????? static ?????????????????????

???????????????????????????????????????????????????? null?????????????????????????????????????????????????????? super ???????????? Beetle ??????????????????????????????????????????????????????????????????????????????

转载地址:http://bntx.baihongyu.com/

你可能感兴趣的文章
Objective-C实现binary tree traversal二叉树遍历算法(附完整源码)
查看>>
Objective-C实现binomial coefficient二项式系数算法(附完整源码)
查看>>
Objective-C实现BitMap算法(附完整源码)
查看>>
Objective-C实现bitonic sort双调排序算法(附完整源码)
查看>>
Objective-C实现bogo sort排序算法(附完整源码)
查看>>
Objective-C实现BP误差逆传播算法(附完整源码)
查看>>
Objective-C实现breadth First Search广度优先搜索算法(附完整源码))
查看>>
Objective-C实现BreadthFirstSearch广度优先搜索算法(附完整源码)
查看>>
Objective-C实现bubble sort冒泡排序算法(附完整源码)
查看>>
Objective-C实现Burke 抖动算法(附完整源码)
查看>>
Objective-C实现CaesarsCiphe凯撒密码算法(附完整源码)
查看>>
Objective-C实现cartesianProduct笛卡尔乘积算法(附完整源码)
查看>>
Objective-C实现check strong password检查密码强度算法(附完整源码)
查看>>
Objective-C实现chudnovsky algorithm楚德诺夫斯基算法(附完整源码)
查看>>
Objective-C实现circle sort圆形排序算法(附完整源码)
查看>>
Objective-C实现cocktail shaker sort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现cocktailShakerSort鸡尾酒排序算法(附完整源码)
查看>>
Objective-C实现combine Without Repetitions不重复地结合算法(附完整源码)
查看>>
Objective-C实现conjugate gradient共轭梯度算法(附完整源码)
查看>>
Objective-C实现coulombs law库仑定律算法(附完整源码)
查看>>