Java编程思想学习笔记(七) 第8章 多态

来源:互联网 发布:合众思壮怎么样知乎 编辑:程序博客网 时间:2024/06/06 00:54
  1. @Override注解,
    编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。
@Overridepublic void onDraw() {    ……}这种写法是正确的,如果你写成:@Overridepublic void ondraw() {    ……}编译器会报如下错误:The method ondraw() of type must override or implement a supertype method.

2.如果导出类存在重写父类方法,当调用该方法时优先使用子类重写方法。
3. 只有非private方法可以被重写。子类中最好不要采用与基类private方法相同的方法名。
4. 如果某个方法是静态的,他的行为就不具有多态。
5. 为环境变量CLASSPATH添加新路经,要用”:”分隔。调用javac和java命令一定要位于CLASSPATH路径的末端。
6. 构造方法并不具有多态性,因为它是隐式的static方法。
7. 对象调用构造器遵照以下顺序:首先会调用基类构造器。这个步骤会不断反复递归下去,直到最底层的导出类。再次按声明顺序调用成员的初始化方法。最后调用导出类构造器的主体。
8. 引用计数。

//: polymorphism/ReferenceCounting.java                                                       // Cleaning up shared member objects.import static net.mindview.util.Print.*;class Shared {    private int refcount = 0;    private static long counter = 0;    private final long id = counter++;    public Shared() {        print("Creating " + this);    }    public void addRef() {        refcount++;    }    protected void dispose() {        if(--refcount == 0)            print("Disposing " + this);        }    public String toString() {        return "Shared " + id;    }}class Composing {    private Shared shared;    private static long counter = 0;    private final long id = counter++;    public Composing(Shared shared) {        print("Creating " + this);        this.shared = shared;        this.shared.addRef();    }    protected void dispose() {        print("disposing " + this);        shared.dispose();    }    public String toString() {         return "Composing " + id;    }}public class ReferenceCounting {    public static void main(String[] args) {    Shared shared = new Shared();    Composing[] composing = { new Composing(shared),        new Composing(shared), new Composing(shared),        new Composing(shared), new Composing(shared) };    for(Composing c : composing)        c.dispose();    }} /* Output:Creating Shared 0Creating Composing 0Creating Composing 1Creating Composing 2Creating Composing 3Creating Composing 4disposing Composing 0disposing Composing 1disposing Composing 2disposing Composing 3disposing Composing 4Disposing Shared 0static long counter 跟踪所创建的Shared实例的数量,long可以防止计数器溢出。id是final型,可以保证在生命周期以内不会被改变。*///:~

9.Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。getClass().getName() + '@' + Integer.toHexString(hashCode())
10.代码初始化顺序:

1.在其他任何事物发生之前,将分配给对象的存储空间初始化为二进制的零。2.在构造器内部发生多态时(调用未被初始化的对象),该对象返回03.按照声明的顺序调用成员的初始化方法。4.调用导出类的构造器主体。5.在构造器内唯一能够安全调用的那些方法时基类中的final方法,也适用于private方法,他们会自动属于final方法。

11.Java一条通用准则:“用继承表达行为间的差异,并用字段表达状态上的变化。”

0 0
原创粉丝点击