我有这三个班
public class Abc
{
public methAbc()
{
System.out.println("parent class method");
}
}
public class Xyz extends Abc
{
public methAbc()
{
System.out.println("overriden parent class method");
}
public methXyz()
{
System.out.println("child class method");
}
}
class Pqr
{
Xyz childObjChildRef = new Xyz();
Abc childObjParentdRef = new Xyz();
}
在课程Pqr
在不同引用中创建对象的主要区别是什么
1:在同一个类引用中持有对象时
==>然后我们可以调用类中的所有方法
2:在父类引用中持有对象时
==>那么我们只能调用类中重写的方法
解决方法:
在java中,如果可能,建议您使用您的具体类型正在实现的超类型或接口.这会将您的代码与类的实际实现分离.
例如:假设您正在编写视频游戏的主循环.在那里你使用Enemy接口编写你的代码,它有一些方法(collide(),shoot(),determineNextMovement()等).一旦你用这个界面编写了你的主循环,它就会永远保持原样;但是,您可以通过添加Enemy界面的新实现(EnemyShip,EnemyMonster,EnemyParachuter等)来扩展您的视频游戏,但是您永远不需要修改主循环.
这是面向对象编程的设计原则:
标签:java
来源: https://codeday.me/bug/20190725/1531602.html