子类有和父类同名的实例变量的问题(见代码)

程猿薇茑
优质创作者: Java技术领域
领域专家: 后端开发技术领域
2016-10-26 02:22:38

class Demo {
public static void main(String[] args) {
Zi z= new Zi();
System.out.println(z.a + z.s) ;
z.show();//子类的对象去调用的show,当前对象应该是子类对象啊,为什么输出的结果是父类的成员变量值?
}
}

class Fu {
private int a;
String s = "www";

public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}

public void show(){
System.out.println(this.a);
System.out.println(this.s);
System.out.println(this.getClass());
}
}

class Zi extends Fu{
int a = 123;
String s = "niao";
}

...全文
532 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikyotensai 2016-10-27
  • 打赏
  • 举报
回复
引用 5 楼 zpcandzhj 的回复:
[quote=引用 4 楼 qq_26508409 的回复:] [quote=引用 3 楼 zpcandzhj 的回复:] [quote=引用 2 楼 qq_26508409 的回复:] 你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
引用 1 楼 qnmdcsdn 的回复:
你在子类中重写show方法就会调用子类的了
能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了 为什么this.getClass()显式是子类,缺显示的父类的成员变量[/quote] 父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s[/quote] 好乱的感觉[/quote] 哪乱!
NewMoons 2016-10-27
  • 打赏
  • 举报
回复
实际的设计中,一般都是方法的覆盖,成员变量的覆盖没有任何意义,所以真实的代码中你不会遇到成员变量的覆盖,就此打住吧。 你这个问题已经有N个人问过了,确实容易产生迷惑。不过看到这希望你不要再钻牛角尖了,否则就是浪费时间。
NewMoons 2016-10-27
  • 打赏
  • 举报
回复
1楼和2楼已经说得很清楚了,方法可以覆盖,成员变量不能覆盖,这是规则!无它!
老兵与新兵 2016-10-27
  • 打赏
  • 举报
回复
nikyotensai 2016-10-27
  • 打赏
  • 举报
回复
引用 7 楼 zhangscheng922 的回复:
[quote=引用 6 楼 qq_26508409 的回复:] [quote=引用 5 楼 zpcandzhj 的回复:] [quote=引用 4 楼 qq_26508409 的回复:] [quote=引用 3 楼 zpcandzhj 的回复:] [quote=引用 2 楼 qq_26508409 的回复:] 你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
引用 1 楼 qnmdcsdn 的回复:
你在子类中重写show方法就会调用子类的了
能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了 为什么this.getClass()显式是子类,缺显示的父类的成员变量[/quote] 父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s[/quote] 好乱的感觉[/quote] 哪乱![/quote] 那为什么this.class打印的是子类呢,明显这时候this指向的是子类对象,那为什么this.a却指向的是父类呢???[/quote] 回答你有分吗
  • 打赏
  • 举报
回复
引用 6 楼 qq_26508409 的回复:
[quote=引用 5 楼 zpcandzhj 的回复:] [quote=引用 4 楼 qq_26508409 的回复:] [quote=引用 3 楼 zpcandzhj 的回复:] [quote=引用 2 楼 qq_26508409 的回复:] 你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
引用 1 楼 qnmdcsdn 的回复:
你在子类中重写show方法就会调用子类的了
能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了 为什么this.getClass()显式是子类,缺显示的父类的成员变量[/quote] 父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s[/quote] 好乱的感觉[/quote] 哪乱![/quote] 那为什么this.class打印的是子类呢,明显这时候this指向的是子类对象,那为什么this.a却指向的是父类呢???
程猿薇茑 2016-10-26
  • 打赏
  • 举报
回复
引用 4 楼 qq_26508409 的回复:
[quote=引用 3 楼 zpcandzhj 的回复:] [quote=引用 2 楼 qq_26508409 的回复:] 你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
引用 1 楼 qnmdcsdn 的回复:
你在子类中重写show方法就会调用子类的了
能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了 为什么this.getClass()显式是子类,缺显示的父类的成员变量[/quote] 父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s[/quote] 好乱的感觉
nikyotensai 2016-10-26
  • 打赏
  • 举报
回复
引用 3 楼 zpcandzhj 的回复:
[quote=引用 2 楼 qq_26508409 的回复:] 你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
引用 1 楼 qnmdcsdn 的回复:
你在子类中重写show方法就会调用子类的了
能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了 为什么this.getClass()显式是子类,缺显示的父类的成员变量[/quote] 父类无法调用子类成员变量。show方法属于父类,父类用不了子类的s
程猿薇茑 2016-10-26
  • 打赏
  • 举报
回复
引用 2 楼 qq_26508409 的回复:
你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
引用 1 楼 qnmdcsdn 的回复:
你在子类中重写show方法就会调用子类的了
能不能解释一下程序执行的过程,我也知道重写show方法就会调用子类的了 为什么this.getClass()显式是子类,缺显示的父类的成员变量
nikyotensai 2016-10-26
  • 打赏
  • 举报
回复
你有没有想过如果Zi里面没s会怎么样。成员变量有不能override
  • 打赏
  • 举报
回复
你在子类中重写show方法就会调用子类的了
内容概要:本文聚焦于“基于改进电流解耦与电位平衡的T型三电平逆变器低电压穿越研究”,通过Simulink仿真实现,系统探讨了T型三电平逆变器在电网电压跌落情况下的低电压穿越(LVRT)能力。研究提出了一种改进的电流解耦控制策略与中点电位平衡控制方法,旨在提升逆变器在故障工况下的动态响应性能、系统稳定性及功率调节能力。通过构建详细的Simulink电磁暂态模型,验证了所提控制策略在抑制负序电流、维持直流侧中点电压稳定、实现快速有功与无功功率协调控制方面的有效性,为新能源发电系统并网的可靠运行提供了理论支持和技术路径。; 适合人群:具备电力电子、自动控制及电力系统相关专业知识,熟悉MATLAB/Simulink仿真环境,从事新能源并网、逆变器控制策略研究、电能质量分析或电力系统仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解T型三电平逆变器在低电压穿越过程中的控制难点,掌握改进电流解耦与中点电位平衡的核心控制原理;② 学习并实践在Simulink中搭建高保真度逆变器仿真模型的方法,掌握双环控制、负序分量处理、中点电位反馈调节等关键技术环节;③ 为开展相关课题研究、撰写学术论文或进行工程化设计提供可复现的仿真案例与理论依据。; 阅读建议:建议结合文中所述控制算法,动手搭建并调试Simulink仿真模型,重点关注电流内环与电压外环的参数整定、中点电位波动的抑制效果以及不同电网故障条件下系统的响应特性,从而深入理解控制策略与系统动态性能之间的内在联系。
内容概要:本文研究了基于阶跃响应的V-Tiger自动增益调整PID控制器优化方法,提出了一种结合阶跃响应特征采集与多目标协同优化的增益整定策略,并引入自适应迭代校正机制以提升控制精度与动态响应性能。通过Matlab代码实现了该算法,系统阐述了PID控制的关键性能指标与V-Tiger控制器的技术特点,详细设计了从响应数据提取、参数初设、优化迭代到性能评估的全流程方案。仿真实验结果表明,该方法在调节时间、超调量、稳态误差及抗干扰能力方面均优于传统整定方式,显著提升了PID控制器在复杂工况下的适应性与鲁棒性。; 适合人群:具备自动控制理论基础和Matlab编程能力,从事控制工程、自动化、电气工程及相关领域的科研人员、高校研究生及工业界研发工程师。; 使用场景及目标:①应用于工业过程控制中PID参数的自动化整定,减少人工调试成本;②提升控制系统对非线性、时变对象的适应能力;③为先进控制算法的教学演示与科研验证提供可复现的仿真平台和技术范例。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注阶跃响应特征提取方法、多目标优化函数的设计逻辑以及自适应校正环节的实现机制,深入理解各模块之间的协同关系,并可通过修改被控对象模型进一步拓展算法适用范围。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧