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对象(更恰当的说, ...
随机推荐
- no matching function transform?
http://stackoverflow.com/questions/19876746/stdtolower-and-visual-studio-2013 http://forums.codeguru ...
- WinExec可能会引起消息重入
WinExec不仅会造成延迟,并且还会引起消息的重入. 以下是调用堆栈: WinvoiceCC.exe!CWinvoiceCCDlg::OnMsgHttpReq(unsigned int wParam ...
- 用vhd挂载并安装win7且建立分差vhd
准备:硬盘分区激活第一个分区; imagex.exe; install.wim; winpe boot pc 1.cmd命令下,创建主vhd (1)diskpart (打开dis ...
- java.lang.IllegalArgumentException: sheetName '' is invalid
1.错误描写叙述 java.lang.IllegalArgumentException: sheetName '' is invalid - character count MUST be great ...
- PAT Rational Arithmetic (20)
题目描写叙述 For two rational numbers, your task is to implement the basic arithmetics, that is, to calcul ...
- qt-qml移动开发之在ios上开发和部署app流程简单介绍
qt5.3已经全面支持移动开发,除了mac,windows,linux.还支持ios,android,wp,meego等移动平台,本教程是作者依据自己的经验,从头讲怎么样在ios上公布自己的app.因 ...
- tesnorflow Batch Normalization
1.train或者从checkpoint restore后发现moving_mean和moving_variance都是0和1 bn1_mean = graph.get_tensor_by_name( ...
- 6个变态的C语言Hello World程序 之 雷人的程序语言
以下的六个程序片段主要完毕这些事情: 输出Hello, World 混乱C语言的源码 以下的全部程序都能够在GCC下编译通过,仅仅有最后一个须要动用C++的编译器g++才干编程通过. hello1.c ...
- DSPC6748中某问题的解决方式
因为之前没有做过DSP相关的开发,属于菜鸟中的菜鸟.出现故障后.不知道从哪方面来解决这些小问题. 开发环境:CCS5.5.0 开发板:TI公司的TMS320C6748 问题: 控制台出现初始化结束后多 ...
- 【bzoj4245】[ONTAK2015]OR-XOR
利用前缀和选m个区间等价于选m个数 从最高位开始找,如果这一位至少有m个0,则可以为0,该位为1的后面就不可以选了. 还要注意,最后一个数如果该位为1,那么这一位必须为1,然后要从62开始枚举,而不是 ...