覆盖私有方法

 class Father {
private void f() { System.out.println("Father::f()"); }
public static void main(String[] args) {
Father father = new Son();
father.f(); //输出:Father::f()
}
} class Son extends Father {
public void f() { System.out.println("Son::f()"); }
public static void main(String[] args) {
Son son = new Son();
son.f(); //输出:Son::f()
}
}

上面例子中由于Father的f是私有的,所以在Father的main方法中对f的调用是静态绑定的。

如果把f定义为public的,则在Father中对f的调用将是动态绑定的。

域与静态方法

 class Father {
public int i = 0;
public int get() { return i; }
} class Son extends Father {
public int i = 1;
public int get() { return i; }
public int get_super() { return super.i; }
} class Test {
public static void main(String[] args) {
Father f = new Son();
System.out.println(f.i); //0
System.out.println(f.get());//1
Son s = new Son();
System.out.println(s.i);//1
System.out.println(s.get());//1
System.out.println(s.get_super());//0
Son s1 = (Son)f;
System.out.println(s1.i);//1
System.out.println(s1.get());//1
System.out.println(s1.get_super());//0
}
}

对于成员函数的访问是没有多态的,子类型和父类型中的i是不同的存储空间。使用父指针访问的时候使用的父的空间,使用子指针访问的时候使用的是子的空间。

在构造函数中调用的函数如果是可以动态绑定的,并且在子类中被继承了,那么就会调用子类的方法

 class Father {
void draw() { System.out.println("Father::draw"); }
Father() { draw(); }
} class Son extends Father {
int i = 1;
void draw() { System.out.println("Son::draw: " + i); }
} class Test {
public static void main(String[] args) {
new Son(); //Son::draw: 0
}
}

如果把Father中的draw定义为private的,那么在Test中的输出就是Father::draw

Java编程思想读书笔记_第8章的更多相关文章

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

    final关键字类似const: import java.util.*; public class FinalData { static Random rand = new Random(47); f ...

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

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

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

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

  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. css3 模拟标牌震荡效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  2. operamasks—omGrid/omBorderLayout的混合使用

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs&q ...

  3. Windows Server 2012关机的几种方法

    综合使用方法如下: 1.shutdown -r –f     強制重新启动 2.shutdown –s –f    強制关闭 方法/步骤 1 首先把鼠标移到任务栏右下角,时间往右一点小空位,稍微停留一 ...

  4. android仿qq空间、微信朋友圈图片展示

    废话不多说,先上效果图 由于近期须要做朋友圈功能,所以在此记录一下,事实上非常多人不明确的一点应该是在图片的排列上面吧,不规则的排列,事实上非常easy的.就是一个GridView.然而你xml光光写 ...

  5. Hadoop HDFS NFS GateWay部署深入具体解释

    目的:通过挂载的方式,能够相似訪问本地磁盘的方式一样的訪问Hadoop文件.简单.方便.快捷. 0.系统版本号&hadoop版本号 1)系统版本号 [root@WEB-W031 sbin]# ...

  6. java实现floyd统计天津地铁的网站距离

    一:说明 (1)使用floyd实现各个网站的计算记录和路径 (2)网站获取和初始距离依据外部文件得到 (3)结果以外部文件的形式存储 (4)网站间转乘,觉得初始值也为1 (5)代码凝视比較具体,如有疑 ...

  7. 二叉查找树(BST)

    二叉查找树(BST) 二叉查找树(Binary Search Tree)又叫二叉排序树(Binary Sort Tree),它是一种数据结构,支持多种动态集合操作,如 Search.Insert.De ...

  8. php &amp; 和 &amp;amp; (主要是url 问题)

    ini_set('arg_separator.output','&'); 也能够在php.ini 改动

  9. windows console Kill PID 端口查看

    开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...

  10. python2.x里unicode错误问题

    import sys reload(sys) sys.setdefaultencoding('utf8')