java基础(对象转型)-写给自己的博客

本文探讨了Java中对象转型的应用场景及注意事项,并通过实例详细解释了动态绑定机制的工作原理。
java基础(对象转型)-写给自己的博客


class AnimalClass//声明一个动物类
{

public void printSuper()
{
System.out.println("printSuper:——>AnimalClass");
}

public void print()
{
System.out.println("print:——>AnimalClass");
}
}

class Dog extends AnimalClass//声明一个狗类,并继承自动物类 AnimalClass
{
public void printSub()
{
System.out.println("printSub:——>Dog ");
}

public void print()
{
System.out.println("print:——>Dog");
}
}

public class TestAnimals
{
public static void main(String[] args)
{
AnimalClass animal = new Dog();//声明一个子类Dog对象,并让其基类(animal)引用变量指向它'new Dog()'。
//animal.printSub();//编译器报错,这说明基类的引用不能访问子类的新增成员(对象和方法)
/*

D:\java\object>javac testanimals.java
testanimals.java:25: 找不到符号
符号: 方法 printSub()
位置: 类 AnimalClass
animal.printSub();
^
1 错误

*/
//为了解决上面的问题,只能进行对象的强制转型
Dog animalThree = (Dog)animal;
animalThree.printSub();

AnimalClass animalTwo = new Dog();
animalTwo.print();/*为什么这个会打印出 print:——>Dog 这个结果,而不是 print:——>AnimalClass 呢?这个就是动态绑定机制。*/

}
}



以下代码改自互联网

class Son extends Father {

public void method1(){

System.out.println("子类中的method1方法");
}


public void method2(){

System.out.println("子类中的method2方法");
}



}

//父类:
class Father {


public Father(){

System.out.println("Father中的this " + this);
}

public void init(){

//System.out.println("init方法");
this.method1();
this.method2();
}


public void method1(){

System.out.println("父类中的method1方法");
}

private void method2(){//注意此句中的private

System.out.println("父类中的method2方法");
}

}

//测试类:
public class ObjectClass {

public static void main(String[] args) {

Father fa = new Son();
fa.init();
//fa.method2();编译器报错,这说明fa引用虽然指向new Son()对象,但看到的只是继承过来的基类对象new Father()
/*

objectclass.java:54: method2() 可以在 Father 中访问 private
fa.method2();
^
1 错误

*/
/*不过我一直不明白,既然 看到的只是继承过来的基类对象new Father(),为何上面调用fa.init()方法是能对父类的method1()方法进行重写?希望高手拍砖释惑,谢谢~~!
*/
/*今天总算把上面这个问题弄清楚了。之所以会出现上面的问题,是因为“动态绑定(值绑定)”机制在“做窜”(更主要是自己学艺不精)。
*/
System.out.println("----------------------优美的分隔符-----------------------");


Son s = (Son)fa;//强制转型
s.init();
s.method2();//经强制转型后,编译通过
System.out.println("----------------------优美的分隔符-----------------------");

Son s2 = new Son();
s.init();
s.method2();
}

}


以上参考自《马士兵老师.尚学堂科技.JAVA.系列视频教程》以及互联网
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值