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

java使用多态时对于属性和方法访问的理解

    博客分类:
  • java
 
阅读更多
A a = new B();
对象a调用属性时只能调用A类的属性,即使B中有与A相同的属性也是调用A的属性;
在调用方法时只能带用A中方法,但是如果B对A中方法进行了重写,则运行时会调用B中方法。

在new B时,在new出来的对象中有父类A的属性,只是被隐藏了(通过getFields()方法可以看到),这时通过a对象调用属性时就会调到隐藏的真正的A类的属性。
jvm将A和B的类信息及A、B中的方法信息加载到了Method区,通过a.getClass()获得的是B的类信息,B的类信息中将A的类信息(这里主要指方法)全部继承到了B中,如果B中存在与A中某方法完全一致的方法,此时B中的这个方法将A方法覆盖,不管用A对象还B对象都会访问到覆盖后的方法,而A a = new B()中a对象为A的对象,所以此时只能范围到A中声明的方法,对于a对象中存在的但属于B的方法无权访问。
分享到:
评论

相关推荐

    《java面向对象程序设计-继承和多态》教案.doc

    构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰符和方法修饰符 继承 继承的...

    深入理解Java:10个示例展示核心概念和用法涵盖了类和对象、继承和多态、接口和实现、异常处理、集合框架、文件操作、多线程、输入

    这个Java文件包含了10个示例代码,旨在深入理解Java的核心概念和用法。每个示例都展示了不同的方面,涵盖了面向对象编程、继承和多态、接口和实现、异常处理、集合框架、文件操作、多线程、输入输出、Lambda表达式和...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    10.3.7 使用super调用父类中的方法和属性 278 10.4 多态(Polymorphism)以及其他 279 10.4.1 多态——运行方知结果 280 10.4.2 重载也不简单 280 10.4.3 使用多态构建车队 283 10.5 在多态的环境中拨开迷雾 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    10.3.7 使用super调用父类中的方法和属性 278 10.4 多态(Polymorphism)以及其他 279 10.4.1 多态——运行方知结果 280 10.4.2 重载也不简单 280 10.4.3 使用多态构建车队 283 10.5 在多态的环境中拨开迷雾 ...

    Java面试题.docx

    8、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因? 9、成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 10、string 转换成 integer的方式及原理 11-20题: 11、哪些...

    AIC的Java课程1-6章

     理解使用递归方法构建二叉排序树,前序、中序、后序遍历二叉树。  学习ArrayList与LinkedList类,理解封装数组和链表两种方式定义集合类。  可以使用迭代器Iterator遍历集合的元素。  [*]理解...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

    JAVA基础课程讲义

    使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法绑定(method binding) 77 静态绑定 77 动态绑定 77 多态的使用要点 78 对象的转型(casting) 79 ...

    java基础案例与开发详解案例源码全

    5.4.4 Java中对象的创建和使用127 5.5 属性130 5.5.1 属性的定义130 5.5.2 变量131 5.6 方法132 5.6.1 方法的定义132 5.6.2 构造方法135 5.6.4 方法重载138 5.6.5 自定义方法138 5.6.6 系统提供方法139 5.6.7 方法...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    所使用的应用服务器是jboss 5.1和weblogic 11g,详细介绍了这两种应用服务器的安装和使用,以及如何在两大主流服务器上安装、部署java ee应用。  本书内容主要包括三部分,第一部分介绍java ee开发的基础知识,...

    JAVA全套面试题.rar

    Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性。 面向对象编程有很多...

    涵盖了90%以上的面试题

    length属性和length()方法有什么区别 finally块中的代码什么时候被执行 Java中的异常处理机制的简单原理和应用。 java socket java序列化 JVM加载class文件的原理 双亲委派模型 为什么要自定义类加载器 如何自定义...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...

    有关Java面向对象问题整理汇总

    从20世纪60年代提出面向对象的概念到现在,它已经发展成为一种比较成熟的编程思想,其以人类习惯的思维方式,用对象来理解和分析问题,使开发软件的方法与过程尽可能接近人类认识的世界、解决问题的思维方法与过程。

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

     5.1 持久化类的属性及访问方法  5.1.1 基本类型属性和包装类型属性  5.1.2 Hibernate访问持久化类属性的策略  5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  5.1.5 控制insert和update语句...

    Java面试宝典2020修订版V1.0.1.doc

    stop()和suspend()方法为何不推荐使用? 56 2、sleep() 和 wait() 有什么区别? 56 3、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 56 4、线程的基本概念 57 5、什么是多...

    java面试题

    答:1:封装:通过定义类并且给类的属性和方法加上访问控制 2:继承:子类继承父类,子类可以拥有父类中已定义的方法,并且子类可以修改父类中的方法使其更适合特殊需求。 3:多台:不同对象对统一消息作出不同...

    Xtend官方文档-第一章-入门

    Xtend 是一种静态类型的编程语言,...强大的开关表达式 - 隐式的类型转换 多重调度 - 又名:多态方法调用 模板表达式 - 具有智能空白处理 没有语句 - 一切都是表达 属性 - 简化了 getter 和 setter 的访问。。。。。

Global site tag (gtag.js) - Google Analytics