这很好用
class A
{
public void f1(int x) {
System.out.println("F1 of A");
}
}
class B extends A
{
public void f1(int x) {
System.out.println("F1 of B");
}
}
public class Overriding {
public static void main (String[] args) {
A obj = new B(); //No Error
obj.f1(7);
}
}
但这会产生错误
class A
{
public void f1(int x) {
System.out.println("F1 of A");
}
}
class B extends A
{
public void f1(int x) {
System.out.println("F1 of B");
}
}
public class Overriding {
public static void main (String[] args) {
B obj1 = new A(); // error: incompatible types: A cannot be converted to B
obj1.f1(7);
}
}
创建一个类的对象并使用java中其他类的引用变量引用它的概念是什么?
答案 0 :(得分:2)
以这种方式思考:所有起亚灵魂都是汽车,但并非所有汽车都是起亚灵魂。我可以假设起亚灵魂拥有所有汽车共有的所有属性,但我知道汽车一般不具备与起亚灵魂相同的所有属性。
您可以执行类似
的操作Car car = new KiaSoul();
但你明确地不能做类似
的事情KiaSoul soul = new Car();
答案 1 :(得分:2)
当您创建一个继承另一个类的字段和方法的新类时,您创建的对象必须是父类的类型。
如果您有一个班级Shape
,另一个班级extends
,请说Circle
:
您可以创建Shape
类型Circle
,但无法创建Circle
类型Shape
。 Shape
不保证有半径,圆周,直径等功能和字段......
Oracle有一些关于继承的非常有用的教程我建议你阅读:https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html