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章的更多相关文章

  1. Java编程思想读书笔记_第6章

    如何创建一个包: 比如创建一个包名为com.huawei 则在一个目录下如(d:\java)创建目录com/huawei 然后在huawei目录下创建一个文件Assist.java package c ...

  2. Java编程思想读书笔记_第三章

    本章提到的关于==的部分,一个完整的实验如下: class Test { public static void main(String[] args) { Integer i = new Intege ...

  3. Java编程思想读书笔记_第8章

    覆盖私有方法 class Father { private void f() { System.out.println("Father::f()"); } public stati ...

  4. Java编程思想读书笔记_第6章(访问权限)

    四种访问权限: public private 包访问权限 protected 如果没有明确指定package,则属于默认包 package access.dessert; public class C ...

  5. Java编程思想读书笔记_第二章

    java对于将一个较大作用域的变量“隐藏”的场景会有保护:编译告警.比如: int x = 5; { int x = 6; } 但是对于类中方法的局部变量和类成员变量确是可以重名的,比如 class ...

  6. java编程思想读书笔记 第十二章 通过异常处理错误(下)

    1.异常的限制 当覆盖方法的时候,仅仅能抛出在基类方法的异常说明里列出的那些异常. 这意味着,当基类使用的代码应用到其派生类对象的时候,一样能够工资,异常也不例外. 以下的样例是在编译时施加在异常上面 ...

  7. JAVA编程思想读书笔记(五)--多线程

    接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...

  8. JAVA编程思想读书笔记(四)--对象的克隆

    接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...

  9. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

随机推荐

  1. js的声明与引入

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. eclipse添加高版本tomcat问题

    eclipse添加高版本tomcat会报错,提示无法匹配高版本的容器installation is expected 解决方法: 1.找到tomcat的lib目录下的catalina.jar包,用压缩 ...

  3. 洛谷 P1183 多边形的面积

    P1183 多边形的面积 题目描述 给出一个简单多边形(没有缺口),它的边要么是垂直的,要么是水平的.要求计算多边形的面积. 多边形被放置在一个 X-YX−Y 的卡笛尔平面上,它所有的边都平行于两条坐 ...

  4. k-d树及八叉树

    http://en.wikipedia.org/wiki/K-d_tree http://en.wikipedia.org/wiki/Octree

  5. 【Nginx】负载均衡-IP哈希策略剖析

    转自:江南烟雨 IP哈希初始化 IP哈希的初始化函数ngx_http_upstream_init_ip_hash(ngx_http_upstream_ip_hash_module.c): static ...

  6. iOS开发项目实战——Swift实现图片轮播与浏览

    近期開始开发一个新的iOS应用,自己决定使用Swift.进行了几天之后,发现了一个非常严峻的问题.那就是无论是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是 ...

  7. 函数绑定 bind

    函数拓展-bind bind实现的是:对函数绑定作用域 更改作用域的方法:call,apply,with,eval,bind call 和 apply 的比较 相同点:1.都是在使用时候(使用即执行) ...

  8. NYOJ 496 [巡回赛-拓扑排序]

    链接:click here 题意: 巡回赛 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 世界拳击协会(WBA)是历史最悠久的世界性拳击组织,孕育了众多的世界冠军, ...

  9. Python开发【第*篇】【Socket网络编程】

    1.Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. so ...

  10. Android使用sqlite数据库的使用

    移动端Android开发,我们使用的是sqlite数据库,这是一个轻量级的数据库,我们在使用的时候,甚至不想mysql等数据库一样加载驱动啊,在androidsdk中,都已经帮我们做好了,我们只需要用 ...