在Java中,继承是一种机制,其中一个对象获取父对象的所有属性和行为。它是面向对象编程系统(OOPs)的重要组成部分。

继承的思想是您可以基于现有类创建新类。当您从现有类继承时,您可以重用父类的方法和字段,并且还可以在当前类中添加新的方法和字段。

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

为什么在Java中使用继承呢?

  • 方法重写(以实现运行时多态性)。
  • 提高代码的可重用性。

继承中使用的术语有:

  • 类:类是一组具有共同属性的对象。它是创建对象的模板或蓝图。
  • 子类/派生类:子类是继承其他类的类。它也被称为派生类、扩展类或子类。
  • 超类/父类:超类是子类继承特征的类。它也被称为基类或父类。
  • 可重用性:可重用性是一种机制,帮助您在创建新类时重用现有类的字段和方法。您可以使用在上一个类中定义的相同字段和方法。

Java继承的语法

class Subclass-name extends Superclass-name  
{  
   //方法和字段  
}  

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("程序员工资为:"+p.salary);  
   System.out.println("程序员的奖金是:"+p.bonus);  
}  
}  

输出:

程序员工资为:40000.0
程序员奖金为:10000

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

java中的继承类型

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

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

注意:Java 通过类不支持多重继承。

当一个类继承多个类时,称为多重继承。例如:

单一继承示例

当一个类继承另一个类时,它被称为单继承。在下面给出的例子中,Dog 类继承了 Animal 类,因此存在单继承。

文件:TestInheritance.java

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

输出:

叫声...
吃...

多级继承示例

在Java中,当存在一个继承链时,称为多级继承。如下所示的示例中,BabyDog类继承自Dog类,而Dog类又继承自Animal类,因此形成了多级继承关系。

文件:TestInheritance2.java

class Animal{  
void eat(){System.out.println("吃...");}  
}  
class Dog extends Animal{  
void bark(){System.out.println("叫声...");}  
}  
class BabyDog extends Dog{  
void weep(){System.out.println("哭泣...");}  
}  
class TestInheritance2{  
public static void main(String args[]){  
BabyDog d=new BabyDog();  
d.weep();  
d.bark();  
d.eat();  
}}  

输出:

哭泣...
叫声...
吃...

层次继承示例

当两个或多个类继承自同一个类时,称为层次继承。在下面的例子中,Dog类和Cat类都继承自Animal类,因此存在层次继承关系。

文件:TestInheritance3.java

class Animal{  
void eat(){System.out.println("吃...");}  
}  
class Dog extends Animal{  
void bark(){System.out.println("叫声...");}  
}  
class Cat extends Animal{  
void meow(){System.out.println("喵呜……");}  
}  
class TestInheritance3{  
public static void main(String args[]){  
Cat c=new Cat();  
c.meow();  
c.eat();  
//c.bark();//C.T.Error  
}}  

输出:

喵呜……
吃...

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

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

考虑以下场景:假设有三个类A、B和C,其中C类继承了A类和B类。如果A类和B类中有相同的方法,并且您从C类的对象中调用该方法,就会出现歧义。编译器无法确定应该调用A类的方法还是B类的方法。

为了避免这种模糊性,Java在继承中限制了多重继承的使用。当一个类继承多个类时,无论这些类中的方法是否相同,都会在编译时产生错误。这样可以在编译阶段捕捉到潜在的冲突,并避免在运行时出现错误。

class A{  
void msg(){System.out.println("Hello");}  
}  
class B{  
void msg(){System.out.println("Welcome");}  
}  
class C extends A,B{ //假设它是 
   
 public static void main(String args[]){  
   C obj=new C();  
   obj.msg();//现在将调用哪个 msg() 方法? 
}  
}  

输出:

Compile Time Error

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想