Java编程思想学习笔记(七) 第8章 多态
来源:互联网 发布:合众思壮怎么样知乎 编辑:程序博客网 时间:2024/06/06 00:54
- @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.在构造器内部发生多态时(调用未被初始化的对象),该对象返回0。3.按照声明的顺序调用成员的初始化方法。4.调用导出类的构造器主体。5.在构造器内唯一能够安全调用的那些方法时基类中的final方法,也适用于private方法,他们会自动属于final方法。
11.Java一条通用准则:“用继承表达行为间的差异,并用字段表达状态上的变化。”
0 0
- Java编程思想学习笔记(七) 第8章 多态
- [学习笔记][Java编程思想]第8章:多态
- JAVA编程思想_笔记(七)
- 《Java 编程思想》第8章 多态 笔记
- java编程思想笔记(第四版*第8章)
- JAVA 编程思想 第4版 学习笔记 - 第五章
- [学习笔记][Java编程思想]第2章:一切都是对象
- [学习笔记][Java编程思想]第11章:持有对象
- [学习笔记][Java编程思想]第3章:操作符
- 《Java编程思想》学习笔记-第5章
- [学习笔记][Java编程思想]第7章:复用类
- [学习笔记][Java编程思想]第9章:接口
- [学习笔记][Java编程思想]第10章:内部类
- Java编程思想 第8章 多态
- 《Java编程思想》--多态--第8章
- Java编程思想学习笔记(一) 第2章 一切都是对象
- Java编程思想学习笔记(二) 第3章 操作符
- Java编程思想学习笔记(三) 第4章 控制执行流程
- POJ 1436 Horizontally Visible Segments 简单hash+区间更新
- 取模(mod)与取余(rem)的区别
- 深入理解Android之AOP
- Glide 使用心得-看视频收藏的图片
- 每日英语(持续更新
- Java编程思想学习笔记(七) 第8章 多态
- OJ系列之---单词倒排
- eclipse导入已经存在的workspace
- DZNEmptyDataSet UItabelView空数据 背景图的实现
- Volley 源码解析
- js中this用法
- 消除eclipse中web项目js文件出现的红叉
- 实践每日记8-4
- ECharts使用心得