Java 如何将对象从类转换为超类
我必须模拟防波堤,控制某些海岸的许可。我的解决方案实现了一个类“Ship”和类“OilShip”、“FishingShip”和“careship”,我使用了继承和Java 如何将对象从类转换为超类,java,class,inheritance,Java,Class,Inheritance,我必须模拟防波堤,控制某些海岸的许可。我的解决方案实现了一个类“Ship”和类“OilShip”、“FishingShip”和“careship”,我使用了继承和 public class OilShip extends Ship{ ... } public class FishingShip extends Ship{ ... } public class CarriageShip extends Ship{ ... } 在另一类我有船=新船(…);我想用某种方式把一艘油船改造成一艘
public class OilShip extends Ship{
...
}
public class FishingShip extends Ship{
...
}
public class CarriageShip extends Ship{
...
}
在另一类我有船=新船(…);我想用某种方式把一艘油船改造成一艘船,也就是说
public Class Abcd{
Ship ship;
public Abcd(OilShip oship){
ship=oship; //*************
}
}
代码似乎有问题,请告诉我。确保在子类的构造函数中调用超类的构造函数 这个解决方案对我来说很好:
public class Ship {
private String name;
private int weight;
public Ship(String name, int weight) {
this.name = name;
this.weight = weight;
}
}
class OilShip extends Ship {
private int oilCapacity;
public OilShip(int oilCapacity, String name, int weight) {
super(name, weight);
this.oilCapacity = oilCapacity;
}
}
class FishingShip extends Ship {
private int fisherMen;
public FishingShip(int fisherMen, String name, int weight) {
super(name, weight);
this.fisherMen = fisherMen;
}
}
class CarriageShip extends Ship {
private int containers;
public CarriageShip(int containers, String name, int weight) {
super(name, weight);
this.containers = containers;
}
}
如前所述,Java类应该总是有一个名称,其中第一个字符是大写的,每个新词-->CamelCase都是大写的
您不需要不同的构造函数。这里使用继承背后令人敬畏的一点是,无论您在“abcd”中将超类“Ship”中的哪个子类放入构造函数,它都会被接受:
public class Abcd {
private Ship ship;
public Abcd(Ship ship){
this.ship = ship;
}
}
那很好。您遇到了什么问题?您能解释一下您的问题吗?如果您使用IDE,屏幕上是否出现任何错误或警告?如果您使用命令行编译java类,您是否得到任何编译错误?您添加的代码将使
类中的成员ship
通过ship class界面指向油船的实例。您声明您有一个shipship ship=new ship(…)的实例代码>这个实例永远不会是一个油船,我正在使用Netbeans,当我尝试这样做时,它说“不兼容的类型:油船不能转换为船”,那么油船不会扩展船。或者它在不同的包中扩展了另一个Ship类。请遵守Java命名约定:类的大小写相同。您的课程应命名为OilShip
、FishingShip
和careship
。谢谢,CamelCase已经更正。我想要这样的东西:public Abcd(OilShip oship){this.ship=oship;}
或者类似的东西。这不可能吗?