java帮我分析下

a281346230 2009-12-05 02:10:14
class A{
public void fun1(){
System.out.println("A类对象");
}
public void fun2(){
this.fun1();
}
}
class B extends A{
public void fun1(){
System.out.println("B类中的实例");
}
public void fun3(){
System.out.println("B类中3的实例");
}
}
class C extends A{
public void fun1(){
System.out.println("C类中的实例");
}
public void fun4(){
System.out.println("C类中的4实例");
}
}
class DTest4{
public static void main(String args[]){
fun(new A());
fun(new B());
fun(new C());
}
public static void fun(A a){
a.fun2();
if(a instanceof B){
System.out.println(a instanceof B);
B b =(B)a;
b.fun3();
}
if(a instanceof C){
System.out.println(a instanceof C);
C c = (C)a;
c.fun4();
}
}
}


主类的代码帮我分析下 谢谢
...全文
134 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liumingwei2009 2009-12-05
  • 打赏
  • 举报
回复
建议把Java SE中的继承和多态好好复习一下。

class A{
public void fun1(){
System.out.println("A类对象");
}
public void fun2(){
this.fun1();
}
}
class B extends A{
public void fun1(){
System.out.println("B类中的实例");
}
public void fun3(){
System.out.println("B类中3的实例");
}
}
class C extends A{
public void fun1(){
System.out.println("C类中的实例");
}
public void fun4(){
System.out.println("C类中的4实例");
}
}
public class DTest4{
public static void main(String args[]){
fun(new A());//将A丢进fun里当然调用它自己的fun1(),下面的两个条件都不成了。这一句只是打印“A类对象”。
fun(new B());//将B类的一个对象丢进去,多态其实执行的是B重写父类的fun1()。下面的分之一会执行。
fun(new C());//跟上面的差不多的分析
}
public static void fun(A a){//多态在这里被体现了,
a.fun2();
if(a instanceof B){
System.out.println(a instanceof B);
B b =(B)a;
b.fun3();
}
if(a instanceof C){
System.out.println(a instanceof C);
C c = (C)a;
c.fun4();
}
}
}
NeverGiveUp2016 2009-12-05
  • 打赏
  • 举报
回复
唉,又看到4楼的穿着好幽默。
finding006 2009-12-05
  • 打赏
  • 举报
回复
class A {
public void fun1() {
System.out.println("A类对象");// 4
}

public void fun2() {
this.fun1();// 3
}
}

class B extends A {
public void fun1() {
System.out.println("B类中的实例");
}

/**
* 此方法是存在的 public void fun2() { this.fun1();// 3 }
*/
public void fun3() {
System.out.println("B类中3的实例");
}
}

class C extends A {
public void fun1() {
System.out.println("C类中的实例");
}

public void fun4() {
System.out.println("C类中的4实例");
}
}

public class DTest4 {
public static void main(String args[]) {
/**
* 调用A类构造方法生成A类实例,将A类实例作为参数传入fun方法,到2 调用A类实例的fun2方法,到3
* fun2方法中再调用当前类实例的fun1方法,this关键字代表当前类 的一个实例,进入步骤4,打印A类对象
* 返回步骤2处继续执行,因为A既不是B的实例,也不是C的实例,该方法结束
*/
fun(new A());// 1
/**
* new B()调用B类构造方法声明B类实例,B类实例作为参数传入fun方法,进入步骤2,该B类实例调用
* fun2方法,到B类中找fun2方法,因为B继承了A类的fun2方法,因此调用当前实例的fun1方法,
* B类重写了A类的fun1方法,调用B类fun1方法,打印B类中的实例,返回到2处继续执行,因为该实例
*【 new B()】是B类的实例,到6,打印a instanceof B值为true,7处将B类实例转型为B类实例,此处
*似乎没有必要,调用B实例fun3方法,打印出B类中3的实例,结束
*/
fun(new B());// 5
/**
* 此处就不写了吧,看懂了上面的,这个依此类推,ok了
*/
fun(new C());
}

public static void fun(A a) {
a.fun2();// 2
if (a instanceof B) {//6
System.out.println(a instanceof B);
B b = (B) a;//7
b.fun3();
}
if (a instanceof C) {
System.out.println(a instanceof C);
C c = (C) a;
c.fun4();
}
}
}
bolink5 2009-12-05
  • 打赏
  • 举报
回复
顶LS 的
neverstopwj 2009-12-05
  • 打赏
  • 举报
回复
稍微注释了一下,这样你或许就能明白了。拆分方式比较简单,一共涉及四个类:A、B、C和TestExtend ,这四个类都可以单独写成一个java文件,其中TestExtend 类是含有main函数的,程序的运行就从这里开始,

class A {
public void fun1() {
System.out.println("A类对象");
}

public void fun2() {
this.fun1();
}
}

class B extends A {
//覆盖了父类A中的方法fun1()
public void fun1() {
System.out.println("B类中的实例");
}

public void fun3() {
System.out.println("B类中3的实例");
}
}

class C extends A {
//覆盖了父类A中的方法fun1()
public void fun1() {
System.out.println("C类中的实例");
}

public void fun4() {
System.out.println("C类中的4实例");
}
}

public class TestExtend {
public static void main(String args[]) {
fun(new A());
System.out.println("*** end fun(new A())");
fun(new B());
System.out.println("*** end fun(new B())");
fun(new C());
System.out.println("*** end fun(new C())");
}

public static void fun(A a) {
a.fun2();
if (a instanceof B) {
System.out.println("a instanceof B");
B b = (B) a;
b.fun3();
}
if (a instanceof C) {
System.out.println("a instanceof C");
C c = (C) a;
c.fun4();
}
}

}

运行结果:
A类对象
*** end fun(new A())
B类中的实例
a instanceof B
B类中3的实例
*** end fun(new B())
C类中的实例
a instanceof C
C类中的4实例
*** end fun(new C())
godismydaughter 2009-12-05
  • 打赏
  • 举报
回复
http://rodney.cnblogs.com/archive/2005/08/18/instanceof.html
a281346230 2009-12-05
  • 打赏
  • 举报
回复
最好能帮我把代码分开
大气污染是影响公众健康与生态环境的重要问题,精准的空气质量时空预测与污染源贡献度量化是精准治污的关键支撑。针对现有研究多源融合不充分、时空关联刻画不足、预测与源解析割裂三方面缺陷,本文设计实现了城市空气质量时空预测与污染源贡献度分析系统,融合监测、气象、工业排放与交通四类数据,构建基于时空注意力的LSTM(STAM-LSTM)预测模型与基于正定矩阵因子分解(PMF)的源解析模型,形成数据融合-特征工程-预测-源解析-可视化闭环。 系统实现四类数据时空对齐与融合,构建时序与空间邻域特征,以普通克里金插值生成1km网格浓度场;STAM-LSTM引入时空注意力自适应学习站点间污染传输时变权重,以72小时输入预测未来24小时逐小时PM2.5浓度;PMF识别交通、工业、燃煤、扬尘与二次生成五个源因子,量化各源全年贡献度并分析时空演变。 实验表明:STAM-LSTM预测RMSE 24.6、MAE 17.8、R² 0.88,相对LSTM基线(30.2)提升18.5%;普通克里金插值误差8.9,优于反距离加权(11.4);源解析显示交通源28.4%、工业源23.1%、燃煤源19.6%为主要贡献源,冬季燃煤源升至27.3%、早高峰交通源达34.8%,下风向工业源贡献高出上风向8~12个百分点;减排情景显示交通源减排20%可使年均PM2.5下降5.7%,与源贡献度排序一致。 系统按五模块14组件实现,功能测试16项用例全部通过,为大气污染预警、源管控与减排政策制定提供了决策依据。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论 第3章 系统需求分析 第4章 系统总体设计 第5章 系统详细设计与实现 第6章 系统测试与分析 第7章 总结与展望 参考文献 附件-实现指南
基于iTransformer-BiGRU-KAN多模型融合的滚动轴承剩余寿命预测研究(Python代码实现)内容概要:本文提出了一种基于iTransformer-BiGRU-KAN多模型融合的滚动轴承剩余寿命预测方法,旨在通过结合多种先进深度学习模型的优势,提升在复杂工况下的预测精度与鲁棒性。该方法利用iTransformer捕捉长期时间序列中的全局依赖关系,通过BiGRU模型提取双向时序特征,最后引入KAN(Kernel Attention Network)增强非线性映射与关键特征的自适应加权能力,实现对轴承退化过程的精准建模。文中详细介绍了模型架构设计、训练流程及在公开数据集上的实验验证,结果表明该融合模型相比单一模型在预测精度和稳定性方面均有显著提升。; 适合人群:具备一定机器学习与深度学习基础,从事设备故障诊断、工业大数据分析或智能运维相关领域的研究人员及工程技术人员,尤其适合研究生及以上学历或有相关项目经验的专业人员。; 使用场景及目标:①应用于工业设备状态监测与预测性维护系统中,实现对滚动轴承等关键部件剩余寿命的精准预测;②为复杂时间序列回归任务提供多模型融合的设计思路与技术参考;③推动深度学习在智能制造与工业物联网领域的落地应用。; 阅读建议:建议读者结合Python代码实现部分,深入理解各子模型的接口设计与融合逻辑,重点关注特征融合机制与注意力权重的可视化分析,以便在实际项目中灵活调整与优化模型结构。
几何旋转和天线校准模式对GNSS相位缠绕的组合效应(Matlab代码实现)内容概要:本文研究了几何旋转和天线校准模式对全球导航卫星系统(GNSS)相位缠绕的组合效应,并提供了基于Matlab的代码实现方案。相位缠绕是GNSS高精度定位中的重要误差源,受卫星与接收机相对几何关系及天线相位中心变化的共同影响。文章通过建模分析几何旋转与天线校准参数对相位缠绕的影响机制,探讨二者耦合作用下的修正方法,旨在提升GNSS数据处理的精度与可靠性。研究涵盖了理论建模、算法实现与仿真实验,结合Matlab工具进行数值模拟与结果可视化,验证了所提方法的有效性。; 适合人群:具备一定GNSS基础知识和Matlab编程能力的科研人员、研究生及从事高精度定位相关工作的技术人员。; 使用场景及目标:①用于GNSS高精度数据处理中相位缠绕误差的精确建模与修正;②支持地壳形变监测、精密授时、卫星定轨等对定位精度要求较高的应用场景;③为相关算法开发与教学研究提供可复现的代码实例。; 阅读建议:建议读者结合GNSS误差处理的相关理论,边运行代码边理解算法细节,重点关注几何旋转模型与天线校准参数的集成方式,并可通过修改参数进行敏感性分析以加深理解。

62,620

社区成员

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

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