关于继承中变量和方法的覆盖:

1, 与基类中同名的变量,会被派生类所覆盖(同时存在但是有独立的值),直接取值将是派生类的值,但是基类的变量也是同时存在的。如果通过派生类函数访问,得到派生类的值。如果通过从基类继承的方法访问,得到基类的值。如果通过基类的变量,但是实际类型是派生类,得到的将是基类的值。

2,与基类中同名的方法,如果签名完全一致,会覆盖基类的方法。同时在基类中与派生类同名,但是签名不同的函数并不会被覆盖(这与C++不同,C++中名字相同就会全部覆盖,而不管签名是否一致)。通过@Override可以显示指定派生类的函数为覆盖基类同签名的函数,如果没有同签名函数则报错,避免本来想覆盖,结果变成了重载。另外,不能用static方法覆盖非static方法,反之也不可以。

以下是一个例子:

package LearnJava;

/**

* Created by Jimmy on 2015/5/29.

*/

class BaseClass{

int x;

void printvar(){

System.out.println("printvar(): x is: " + x);

}

void mf1(){

System.out.println("BaseClass.mf1()");

}

void mf1(int i){

System.out.println("BaseClass.mf1(int)");

}

void mf2(){

System.out.println("BaseClass.mf2()");

}

}

class DerivedClass extends BaseClass{

float x;

void printvar(){

System.out.println("printvar(): x is: " + x);

System.out.println("printvar(): super.x is: " + super.x);

}

void mf1(){

System.out.println("DerivedClass.mf1()");

}

void mf4(){

System.out.println("DerivedClass.mf4()");

}

}

public class Inherit {

public static void main(String[] args){

//基类的成员变量

BaseClass bc = new BaseClass();

System.out.println("BaseClass.x is: " + bc.x);

//派生类的成员变量

DerivedClass dc = new DerivedClass();

System.out.println("DerivedClass.x is: " + dc.x);

dc.mf2();

dc.mf4();

//派生类的成员变量和super访问的基类成员变量

dc.printvar();

//基类的成员变量

BaseClass bchandler = new DerivedClass();

System.out.println("BaseClass handler x is: " + bchandler.x);

bchandler.mf1();

bchandler.mf1(4);

}

}

执行结果是:

BaseClass.x is: 0 //基类为int

DerivedClass.x is: 0.0 //派生类为float

BaseClass.mf2() //调用继承自基类的函数

DerivedClass.mf4() //调用派生类自己实现的函数

printvar(): x is: 0.0 //派生类的函数取得的成员变量为派生类的

printvar(): super.x is: 0 //也可以通过super取得基类的成员变量

BaseClass handler x is: 0 //通过基类的句柄,一样取得的是基类的成员变量

DerivedClass.mf1() //派生类的方法覆盖了基类的方法

BaseClass.mf1(int) //同时基类的重载函数被继承了下来

打印信息:

java 成员函数_Java继承中成员变量和成员函数的覆盖相关推荐

  1. java中静态变量和成员变量的区别

    java中静态变量和成员变量的区别 1.静态变量. 由static修饰的变量称为静态变量,其实质上就是一个全局变量.如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰:没有被静态修饰的内容,其 ...

  2. C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中

    C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中 测试2:证明派生类的虚函数的地址跟第一基类的虚函数地址保存在同一张虚函数表中. 派生类有多少个拥有虚函数的基类,派生类对象就有多少 ...

  3. C++中静态成员变量与静态成员函数

    Hello,我是你们的好朋友一一,一一这次呢想跟大家分享的知识点是静态成员变量和静态成员函数. So what is the 静态成员??? 1.静态成员: 在类定义中,它的成员(包括成员变量和成员函 ...

  4. R语言ggplot2可视化散点图并添加平滑曲线、WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例)

    R语言ggplot2可视化散点图并添加平滑曲线.WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例) 目录

  5. R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图、自定义cex.main参数配置标题文本字体的大小

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图.自定义cex.main参数配置标题文本字体的大小(名称.有效值个数. ...

  6. R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图、通过dot.col参数配置数据点的颜色(名称、有效值个数、均值、中位数、标准差)

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图.通过dot.col参数配置数据点的颜色(名称.有效值个数.均值.中位数.标准差.最大 ...

  7. R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图、并添加箱图(名称、有效值个数、均值、中位数、标准差、最大值、最小值)

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图.并添加箱图(名称.有效值个数.均值.中位数.标准差.最大值.最小值) 目录

  8. R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图、自定义cex.Y.axis参数设置Y轴轴标签字体的大小

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图.自定义cex.Y.axis参数设置Y轴轴标签字体的大小(名称.有效值 ...

  9. R语言epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(一维频率表、包含频数的百分比、累积的百分比、使用条形图可视化频数分布)、设置cum.percent参数即使存在缺失值也显示

    R语言使用epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(tab1函数计算数据的一维频率表.包含频数的百分比.累积的百分比.使用条形图可视化频数分布).设置cum.percen ...

最新文章

  1. 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法
  2. BugkuCTF-Misc:隐写2
  3. TMS320F28335的SCI通信-FIFO中断通信实验
  4. SQLServer学习笔记系列4
  5. Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS
  6. Queue —— JUC 的豪华队列组件
  7. Bake into Pose的设置以及动画系统的一些疑惑和如何实验
  8. 459B Pashmak and Flowers
  9. 挖地雷_1996年分区联赛提高组之三_ssl1071_dfs
  10. 华为数通笔记-NQA
  11. ARM嵌入式核心板介绍
  12. saas 系统租户个性化域名租户绑定自己域名的解决方案
  13. pytorch中tensor转numpy
  14. wps服务器无响应是什么原因,windows10系统运行wps无响应的解决方案
  15. 各种开放API接口汇总信息
  16. 腾讯游戏运营总监酒后吹批:运维工程师这些知识点都不会?赶紧找个地埋了吧!
  17. 微信公众号推送课表及天气(事无巨细+JavaScript版+python版)
  18. Vmware Ubuntu虚拟机磁盘扩容(非常简单)
  19. 芯盾时代: 开启“智慧身份认证”新时代
  20. 与Anthony Baldino一起塑造声音

热门文章

  1. 【技术角度看问题之一】ARM到底是个啥?
  2. 扫描仪 pfu_行业案例:扫描仪高效加持下的艺术工作室
  3. 具有固定名称mysql.data_SQLServer数据库之未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架 解决方案...
  4. SpringBoot和缓存
  5. Kotlin学习笔记 第二章 类与对象 第十节 内部类嵌套类
  6. 红橙Darren视频笔记 界面优化与屏幕适配(下)
  7. oracle启动文件是什么意思,Oracle数据库的启动——口令文件的作用
  8. jQuery学习之五---效果
  9. 6_less中的匹配模式
  10. cocos creator粒子不变色_隐秘的物理粒子系统与渲染 !Cocos Creator LiquidFun !