Java编程思想读书笔记_第7章
final关键字类似const:
import java.util.*;
public class FinalData {
static Random rand = new Random(47);
final int valueOne = 9;
final int i4 = rand.nextInt(20);
static final int INT_5 = rand.nextInt(20);
public static void main(String[] args) {
FinalData f = new FinalData();
//f.valueOne = 7;
//f.i4 = 7;
System.out.println(f);
FinalData f1 = new FinalData();
System.out.println(f1);
}
public String toString() {
return
"valueOne = " + valueOne
+ " " + "i4 = " + i4
+ " " + "INT_5 = " + INT_5;
}
}
注意到:i4和INT_5的差别:类的不同对象中INT_5只在地一个对象创建的时候初始化一次,而i4则在每个对象创建的时候初始化一次。
关于名字屏蔽和C++的原则是不同的
C++中子类的重载函数会屏蔽掉基类中的其他函数:
#include <iostream>
class Homer {
public:
char doh(char c) {
std::cout << "doh(char)" << std::endl;
return 'd';
}
float doh(float f) {
std::cout << "doh(float)" << std::endl;
return 1.0f;
}
};
class Milhouse {};
class Bart : Homer {
public:
void doh(Milhouse& m) {
std::cout << "doh(Milhouse)" << std::endl;
}
};
int main() {
Bart b;
//b.doh(1);
b.doh('x');
//b.doh(1.0f);
Milhouse m;
b.doh(m);
return ;
}
而java不会
class Homer {
char doh(char c) {
System.out.println("doh(char)");
return 'd';
}
float doh(float f) {
System.out.println("doh(float)");
return 1.0f;
}
}
class Milhouse {}
class Bart extends Homer {
void doh(Milhouse m) {
System.out.println("doh(Milhouse)");
}
@Override char doh(char c) {
System.out.println("Bart:doh(char)");
return 'c';
}
}
public class Hide {
public static void main(String[] args) {
Bart b = new Bart();
b.doh(1);
b.doh('x');
b.doh(1.0f);
b.doh(new Milhouse());
}
}
还有就是要注意初始化顺序
class Insect {
Insect() {
System.out.println("Insect::Insect()");
}
static int i = printInit("static Insect::i");
static int printInit(String s) {
System.out.println(s);
return 5;
}
int j = printInit("Insect::j");
}
public class Beetle extends Insect {
Beetle() {
System.out.println("Beetle::Beetle()");
}
public static void main(String[] args) {
System.out.println("Beetle::main()");
new Beetle();
}
int k = printInit("Beetle::k");
static int l = printInit("static Beetle::l");
}
Java编程思想读书笔记_第7章的更多相关文章
- Java编程思想读书笔记_第6章
如何创建一个包: 比如创建一个包名为com.huawei 则在一个目录下如(d:\java)创建目录com/huawei 然后在huawei目录下创建一个文件Assist.java package c ...
- Java编程思想读书笔记_第三章
本章提到的关于==的部分,一个完整的实验如下: class Test { public static void main(String[] args) { Integer i = new Intege ...
- Java编程思想读书笔记_第8章
覆盖私有方法 class Father { private void f() { System.out.println("Father::f()"); } public stati ...
- Java编程思想读书笔记_第6章(访问权限)
四种访问权限: public private 包访问权限 protected 如果没有明确指定package,则属于默认包 package access.dessert; public class C ...
- Java编程思想读书笔记_第二章
java对于将一个较大作用域的变量“隐藏”的场景会有保护:编译告警.比如: int x = 5; { int x = 6; } 但是对于类中方法的局部变量和类成员变量确是可以重名的,比如 class ...
- java编程思想读书笔记 第十二章 通过异常处理错误(下)
1.异常的限制 当覆盖方法的时候,仅仅能抛出在基类方法的异常说明里列出的那些异常. 这意味着,当基类使用的代码应用到其派生类对象的时候,一样能够工资,异常也不例外. 以下的样例是在编译时施加在异常上面 ...
- JAVA编程思想读书笔记(五)--多线程
接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...
- JAVA编程思想读书笔记(四)--对象的克隆
接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...
- JAVA编程思想读书笔记(三)--RTTI
接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...
随机推荐
- HTML5 全屏化操作功能
由于项目中用到了全屏化挫折功能,查看了API后写了一个简单的全屏化model <!DOCTYPE html> <html> <head> <meta http ...
- Ubuntu 16.04粘贴板增强工具Diodon
相比Parcellite(http://www.cnblogs.com/EasonJim/p/7119308.html),Diodon可以支持图片. 安装: sudo add-apt-reposito ...
- C# 图片识别(支持21种语言)转
来自:http://www.cnblogs.com/stone_w/archive/2011/10/08/2202397.html 图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇 ...
- Lua迭代器
在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素.迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,可以通过闭包提供的机制来实现这个任务(闭包中的外部局部变量可以用 ...
- Hadoop HDFS NFS GateWay部署深入具体解释
目的:通过挂载的方式,能够相似訪问本地磁盘的方式一样的訪问Hadoop文件.简单.方便.快捷. 0.系统版本号&hadoop版本号 1)系统版本号 [root@WEB-W031 sbin]# ...
- 转:js点击事件在ios中失效的3种解决方案
ios中不允许将点击事件绑定在document或者body上,如果绑定上的话将会失效.解决方案: 例如: $(document).on('click', '#generate', function ...
- 代理ip 测试
Line #1218 : 101.232.208.245 - - [16/Jan/2018:02:47:34 +0800] "GET /?xltestdesfs HTTP/1.1" ...
- 如何配置MYSQL的MASTER---SLAVE复制备份?
如何配置MYSQL的MASTER---SLAVE复制备份? 一.配置一个mysql服务器做master: 在配置文件my.ini中添加如下内容: log-bin=matster-binlog- ...
- 万一的Delphi消息教程
http://www.cnblogs.com/del/category/134064.html
- 说说循环与闭包——《你不知道的JS》读书笔记(一)
什么是闭包 <你不知道的JS>里有对闭包的定义:"当函数可以记住并访问所在的词法作用域,即使函数是在当前作用域之外执行,这就产生了闭包." 讲闭包是啥的太多了...就一 ...