Java面向对象 多态动态绑定(非静态成员函数、成员变量、静态成员函数)
2015-06-15 22:20
771 查看
package test; class Father { int num = 1; void method1() { System.out.println("father method1"); } void method2() { System.out.println("father method2"); } static void method4() { System.out.println("father static method4"); } } class Son extends Father { int num = 2; void method1() { System.out.println("son method1"); } void method3() { System.out.println("son method3"); } static void method4() { System.out.println("son static method4"); } } public class ExtendClassDemo { public static void main(String[] args) { //非静态成员函数调头 //如果是子类 先看 子类 再看父类 //如果是父类 看父类 Father f = new Son(); //f为父类类型(Father),父类中找方法,父类没有编译就失败 f.method1(); f.method2(); //f.method3(); //error:编译不通过 ((Son)f).method3(); System.out.println(); //子类有先找子类的方法,子类没有再找父类, 父类没有编译就失败 Son s = new Son(); s.method1(); s.method2(); s.method3(); System.out.println(); //*******以下开发中不会遇到,主要是面试题 //成员变量调用变量看 类名 //f是Father类的变量, f.num = 1 //s是Son类的变量, s.num = 2 System.out.println("num = " + f.num); System.out.println(); System.out.println("num = " + s.num); System.out.println(); //静态方法调用看类名,它已经和类名绑定了, f与s类名都为Father,调用Father.method4(),与成员无关 f.method4(); s.method4(); } } /*输出 son method1 father method2 son method3 son method1 father method2 son method3 num = 1 num = 2 father static method4 son static method4 */
相关文章推荐
- 面向对象理论概述
- Java.面向对象(学习笔记)
- java学习之面向对象编程-类与对象
- 黑马程序员_面向对象(一)
- 黑暗程序员--javaSE--java面向对象
- Java面向对象 构造代码块
- 欢迎使用CSDN-markdown编辑器
- Java面向对象编程(思想)简要介绍
- 用JAVA面向对象特性描述现实生活斗地主的过程
- Java面向对象的特征有哪些内容
- Java面向对象(一)
- 关于== 、equals和instanceof方法你想知道的一切——Java
- Java4Android笔记之Java中的面向对象基础(二)
- java基本概念
- 二、java面向对象三大思想
- java-三大特性之一继承
- Java多线程 创建线程的两种方法
- Java面向对象 继承类的一些特殊写法
- Java异常 异常的一些细节
- Java面向对象 局部内部类的一些特点