`
wj196
  • 浏览: 294645 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

多态运行怎么区分引用哪个类型/对象

 
阅读更多
多态的运行:
实例方法:动态绑定,即引用的变量实际引用的类型是哪一个,则运行哪一个实例方法。在运行时由java虚拟机动态决定。
静态方法:静态绑定,即引用的变量所声明的类型是哪一个,则运行哪一个静态方法。在编译阶段就已经做出了决定。
成员变量(包括静态变量和实例变量):静态绑定,即引用变量所声明的类型是哪一个,则运行哪个成员变量。在编译阶段就已经做出了决定。

Base  who = new Sub();
System.out.println("who.var=" + who.var);
who:引用的变量;
Base: 引用变量所声明的类型;
Sub:引用变量实际引用的类型,


package test1;

public class Base {
	String var = "baseVar";
	static String staticvar = "staticBasevar";

	void method() {
		System.out.println("Base method!");
	}

	static void staticMethod() {
		System.out.println("static Base method!");
	}

	public static void main(String[] args) {

		Base who = new Sub();
		System.out.println("who.var=" + who.var);
		System.out.println("who.static =" + who.staticvar);
		who.method();
		who.staticMethod();

	}

}

class Sub extends Base {

	String var = "SubVar";
	static String staticvar = "staticSubvar";

	void method() {
		System.out.println("Sub method!");
	}

	static void staticMethod() {
		System.out.println("static Sub method!");
	}

	String subvar = "sssssssssss";

	void submethod() {
		System.out.println("Sub method!wwwwwwwwwww");
	}

}



运行结果:
who.var=baseVar
who.static =staticBasevar
Sub method!
static Base method!
分享到:
评论

相关推荐

    day10_07面向对象的基本特征三:多态.avi

    * (2)多态引用:左边的变量是父类类型,右边的对象是子类的对象 * * 多态的表现出来的特征:编译类型与运行时类型不一致 * 编译的时候,按照父类的类型进行编译的 * 执行的方法,按照子类进行运行,是...

    深入理解Java多态.pptx.pptx

    多态是面向对象编程中的一个重要特性,它允许一个类的引用变量指向多种实际类型。这意味着在运行时,可以调用不同的方法实现不同的功能 多态的实现方式 多态可以通过继承、接口和重写实现。子类继承父类后,可以使用...

    易语言的继承多态演示源码

    ' 多态:引用同一个类型,使用不同实例而不同操作。' 如下:运行时根据需要生产产品,实现多态。' 封装之接口:抽取方法集合成基类,提供给别人。' 设计模式之工厂模式:包装成工厂模式,隐藏实际创建过程,在需要时只提供...

    C++多态的使用方法代码,根据实际对象类型来执行适当的操作

    C++中的多态性是面向对象编程的重要概念,它允许使用基类指针或引用来调用派生类的方法。这种灵活性使得程序...这就是多态的体现:通过基类指针或引用调用虚函数时,会根据实际对象的类型来动态地决定要调用的函数。

    C++ 编程思想 象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    面向对象(object-oriented).xmind

    面向对象的特性、设计原则,类图 特性 character 封装 encapsulation:隐藏数据,... 运行时多态:对象引用所指向的具体类型在运行时才确定【方法重写(不同类,名相同、参数列表相同、返回值相同)、向上转型】。

    Java期末考试真题试卷及复习资料【高级编程】

    Java期末考试真题试卷及... 多态 答Java引用变量分为编译时的类型和运行时的类型编译时类型由声明该变量时使用的类型决定运行时类型由实际赋给该变量的对象决定如果两类型不一致就出现多态 3.阻塞 答当前正在执行的线

    详解C++ 多态的两种形式(静态、动态)

    运行时多态是动态多态,具体引用的接口在运行时才能确定。 静态多态和动态多态的区别其实只是在什么时候将函数实现和函数调用关联起来,是在编译时期还是运行时期,即函数地址是早绑定还是晚绑定的。静态多态是指在...

    duotai.java

    Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。 如Student类可以为Person类的子类。那么一个Student对象既可以...

    Java多态中的动态绑定与静态绑定

    1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体对象的类型进行绑定,或者说是只有对象在虚拟机中创建了之后,才能确定方法属于哪一个对象,与引用变量实际引用的对象绑定,调用重写的方法,由...

    JAVA基础(二)String/StringBuffer/StringBuilder/成员变量和局部变量/对象实体和对象引用

    1. JAVA面向对象编程三大特征...多态:程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,在程序运行期间才确定。 两种方式:1.继承——多个子类对同一方法的重写;2.接口——实现

    java核心技术(基础篇)

    java核心技术,基础篇一个对象变量可以引用对种实际类型的现象被叫做多态,对象变量遵行置换法则:超类对 象的任何地方都可以用子类对象置换,但是声明为类型为超类对象的变量就算引用了一个子 类的对象,用该引用还是不...

    java面试真题整理

    运行时多态:重写,对象的多态性(父类的引用指向子类的实例) 5.CSDN 1.泛型的好处 保护类型安全 避免强制类性转化 2.final 1.修饰的属性是常量 2.修饰的方法不能被重写 3.修饰的类不能被继承 String

    java核心基础汇总.docx

    类是一种抽象的数据类型,对象是类的实例化,继承是一种扩展已有类的机制,多态则是同一个方法在不同对象上的不同行为。 异常处理:Java中的异常处理机制可以捕获并处理程序运行时出现的异常情况,提高程序的可靠性...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     10.3.1 区分值(Value)类型和实体(Entity)类型  10.3.2 在应用程序中访问具有组成关系的持久化类  10.4 映射复合组成关系  10.5 小结  10.6 思考题 第11章 Hibernate的映射类型  11.1 Hibernate的内置映射...

    易语言-易语言的继承多态演示

    ' 多态:引用同一个类型,使用不同实例而不同操作 ' 如下:运行时根据需要生产产品,实现多态 ' 封装之接口:抽取方法集合成基类,提供给别人 ' 设计模式之工厂模式:包装成工厂模式,隐藏实际创建过程,在需要时只提供工厂

    编程技能训练与等级考试辅导:多态、动态绑定.pptx

    在程序的运行时才进行绑定,称为late binding(后期绑定),这种绑定以对象的类型来决定调用哪一个方法;Person p = new Student("1" , "张三" , "计算机"); p.display( ) ; //正确,输出学生的信息 p. study( ); //...

Global site tag (gtag.js) - Google Analytics