猿教程 Logo

Java继承

Java中的继承是一种机制,可以使一个对象获取父对象的所有属性和行为。

在Java中,继承的想法是,你可以创建基于现有类构建的新类。 当您从现有类继承时,您可以重复使用父类的方法和字段,也可以添加新的方法和字段。

继承表示IS-A关系,也称为父子关系。

为什么在java中使用继承

  • 对于方法覆盖(因此可以实现运行时多态性)。

  • 代码可重用性。

Java继承的语法

class Subclass-name extends Superclass-name
{
   //methods and fields
}

extends关键字表示您正在创建从现有类派生的新类。 “扩展”的含义是增加功能。

在Java的术语中,被继承的类称为父类或超类,新类称为子类。

Java继承示例


如上图所示,Programmer是子类,Employee是超类。 两个类之间的关系是Programmer IS-A Employee.它意味着Programmer是Employee的一种类型。

相关实例:

class Employee{
 float salary=40000;
}
class Programmer extends Employee{
 int bonus=10000;
 public static void main(String args[]){
   Programmer p=new Programmer();
   System.out.println("Programmer salary is:"+p.salary);
   System.out.println("Bonus of Programmer is:"+p.bonus);
}
}
Programmer salary is:40000.0
 Bonus of programmer is:10000

在上面的例子中,Programmer对象可以访问自身类以及Employee类的字段,即代码可重用性。


java中的继承类型

在类的基础上,在java中可以有三种类型的继承:单个,多级和分层。

在Java编程中,通过接口仅支持多重和混合继承。 稍后我们将了解接口。


注意:在java中通过类不支持多继承。

当一个类扩展多个类,即被称为多重继承。 例如:



单继承示例

文件:TestInheritance.java

相关实例:

class Animal{
void eat(){System.out.println("eating...");}
}
class Dog extends Animal{
void bark(){System.out.println("barking...");}
}
class TestInheritance{
public static void main(String args[]){
Dog d=new Dog();
d.bark();
d.eat();
}}

输出:

barking...
eating...

多级继承示例

文件:TestInheritance2.java

相关实例:

class Animal{
void eat(){System.out.println("eating...");}
}
class Dog extends Animal{
void bark(){System.out.println("barking...");}
}
class BabyDog extends Dog{
void weep(){System.out.println("weeping...");}
}
class TestInheritance2{
public static void main(String args[]){
BabyDog d=new BabyDog();
d.weep();
d.bark();
d.eat();
}}

输出:

weeping...
barking...
eating...

分层继承示例

文件:TestInheritance3.java

相关实例:

class Animal{
void eat(){System.out.println("eating...");}
}
class Dog extends Animal{
void bark(){System.out.println("barking...");}
}
class Cat extends Animal{
void meow(){System.out.println("meowing...");}
}
class TestInheritance3{
public static void main(String args[]){
Cat c=new Cat();
c.meow();
c.eat();
//c.bark();//C.T.Error
}}

输出:

meowing...
eating...

Q)为什么在java中不支持多重继承?

为了降低复杂性并简化语言,Java中不支持多重继承。

考虑A,B和C是三个类的场景。 C类继承A和B类。 如果A和B类有相同的方法,并且你从子类对象调用它,A或B类的调用方法会有歧义。

因为编译时错误比运行时错误好,如果你继承2个类,则java渲染编译时错误。 所以无论你有相同的方法还是不同的,现在会有编译时错误。

相关实例:

class A{
void msg(){System.out.println("Hello");}
}
class B{
void msg(){System.out.println("Welcome");}
}
class C extends A,B{//suppose if it were
 
 Public Static void main(String args[]){
   C obj=new C();
   obj.msg();//Now which msg() method would be invoked?
}
}
Compile Time Error


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/inheritance-in-java.html