这个程序似乎在使用多重继承。但是Java不支持多重继承,那么这个程序是如何工作的呢?
当两个类Student
和Professor
继承基类Person
时,编译此代码的原因是什么?
class Person
{
private String name;
private int age;
private int val;
private int value(int sal)
{
return sal/100;
}
public Person(String name, int age, int sal)
{
this.name = name;
this.age = age;
val = value(sal);
}
public void valOverride(int val)
{
this.val = val;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public int getVal()
{
return val;
}
}
class Student extends Person
{
Student(String name, int age, int sal)
{
super(name,age,sal);
}
}
class Prof extends Person
{
Prof(String name, int age, int sal)
{
super(name,age,sal);
}
}
public class AbsDemo
{
public static void main(String[] args)
{
Student s = new Student("prasi", 21, 18000);
Prof pr = new Prof("david",38,25000);
System.out.println(pr.getVal());
pr.valOverride(22);
Person p = new Student("prasanna", 22, 12000);
System.out.println(s.getName());
System.out.println(p.getName());
System.out.println(s.getVal());
System.out.println(pr.getVal());
}
}
答案 0 :(得分:5)
Java“不支持多重继承”,因为类只能extend
一个其他类。
一个父类的多个子类没有任何问题。
答案 1 :(得分:3)
如果使用
Person extends Student,Prof{}
你有一个多重继承,这在JAVA中是不可能的。
答案 2 :(得分:2)
Java 支持“多重继承”在以下情况中:
然而,Java多重继承的概念(在维基百科中松散地定义):
多重继承是一些面向对象的计算机编程语言的一个特性,其中一个对象或类可以从多个父对象或父类继承特性和特性。
(http://en.wikipedia.org/wiki/Multiple_inheritance)
因此,如果您尝试将它们添加到同一个类中,那么Java表示 NOT 支持多重继承(A类扩展ClassB,ClassC)。
就是这样,问题中的代码它不是使用多重继承的概念。它只是扩展同一类的多个类。
答案 3 :(得分:1)
这不是多重继承。当一个类扩展另外两个类而不是当两个不同的类扩展同一个类时,多重继承。您可以通过创建接口来解决多重继承问题。 Java类可以实现任意数量的接口,但它们只能扩展一个类。
不是多重继承(支持):
class Student extends Person
class Prof extends Person
多重继承(不支持):
class Student extends Person, Teenager
答案 4 :(得分:1)
这里没有多重继承......
多重继承是一个类从两个或更多个类扩展的地方
答案 5 :(得分:1)
多重继承将从多个类继承,例如
BaseA BaseB
^ ^
\ /
\ /
\ /
DerivedA
您的示例是单继承,从同一基类发生两次:
BaseA
^
/ \
/ \
/ \
DerivedA DerivedB
答案 6 :(得分:0)
以前说过,多重继承看起来像这样:
class SomePerson extends Student, Prof //invalid
{...}
Java不允许这种类型的多重继承(使用类),但它允许多个类继承自同一个类,如示例所示。
答案 7 :(得分:0)
这是您的代码的流程图。这里没有多重继承概念
答案 8 :(得分:0)
是Java不支持多重继承。你不能像这样扩展两个类
public class A extends B, C
你的代码是这样的
public class A
{
public class B extends A
{
}
public class C extends A
{
}
}
这是inner classes
的概念,而不是multiple inheritance
。