Java继承– OOPS概念

时间:2020-01-09 10:34:45  来源:igfitidea点击:

在这篇文章中,我们将了解Java中继承的用法,这是面向对象的原理之一。

什么是继承

继承是面向对象编程以及抽象,多态和封装的四个基本原则之一。

继承是一种机制,通过该机制,类可以继承另一个类的属性和方法。

超级类–其成员被另一个类继承的类称为超级类(也称为基类或者父类)。

子类–继承类称为子类(也称为派生类或者子类)。子类还可以添加自己的字段和方法,而不是从父类继承的字段和方法。子类也可以覆盖父类的方法。

Java中的继承

Java中的继承是使用extends关键字完成的。

class ChildClass extends ParentClass{
  ....
  ....
}

通过在Java中使用extend关键字类,可以从另一个类或者抽象类继承。

Java中的继承如何帮助

1通过使用Java中的继承,我们可以设计从常规到更具体的模块化(分层)类。

例如–形状–矩形

在这里,我们从具有侧面和面积的通用类Shape开始。矩形是更具体的类。

同样的方式:形状–三角形

另一个例子是:动物–哺乳动物–狗
或者动物–鸟–鹰

2继承有助于编写可重用的代码。由于使用继承从常规设计到更具体的设计,因此我们可以将父类中所有类使用的字段和方法以及相应子类中更具体的实现放入。这样,代码将更可重用。

3继承表示IS-A关系。因此,矩形IS-A形状,狗IS-A哺乳动物以及狗IS-A动物。因此,使用继承还可以实现多态,就像使用Super类类型的引用一样,我们可以引用子类类型。

例如Shape s = new Rectangle();

Java中的继承–继承与不继承

  • public –继承超类的所有公共字段和方法,没有任何限制。
  • protected –即使子类在另一个程序包中,也将继承所有受保护的字段和方法。
  • default –仅当子类在同一个包中时,才会继承对父类具有默认访问权限的所有字段和方法。
  • private –不继承私有字段和方法。
  • 构造函数–超类的构造函数不会被继承,但是在创建子类的对象时将调用超类的默认no-arg构造函数,或者我们可以使用super从子类构造函数中显式调用超类的构造函数。关键词。

Java继承示例

class A {
  private int x;
  private int y;
  public int p;

  A(int x, int y){
    this.x = x;
    this.y = y;		
  }
  public void display() {
    System.out.println("In display method of super class");
    System.out.println("x= " + x + " y= " + y);
  }
}

public class B extends A{
  int z;
  public B(int x, int y, int z) {
    //invoking parent class constructor
    super(x, y);
    this.z = z;	
  }
  public void display() {
    // invoking display method of parent class
    super.display();
    System.out.println("In display method of child class");
    System.out.println("z= " + z);
    
  }
  public static void main(String[] args) {
    B obj = new B(5, 6, 7);
    // not possible as x is private in super class
    //obj.x = 6;
    // public field of super class can be acceessed
    obj.p = 140;
    obj.display();		
  }
}

在示例代码中,类B扩展了类A。从类B的构造函数使用超级关键字调用类A的构造函数以初始化类A的字段。
B类中有一个与A类同名的display()方法,这意味着B类中的display()方法将覆盖A类中的方法。在B类的display()方法中,A类的display()方法就是说,我们使用的是已经在类A的方法中编写的逻辑,而不是再次在类B中编写该逻辑。

对象类–所有类的超类

Java中的每个类都在java.lang包中显式或者隐式扩展了Object类。 Java中的对象类位于Java中的类层次结构树的顶部。

继承类型

根据面向对象的概念,有五种继承类型。请注意,Java中并非支持所有继承类型。

单继承

在单一继承中,子类扩展了单个超类。
Java范例中的单一继承

Class B extends A

多级继承

多级继承表示一个层次结构,其中一个类扩展了另一个类,而另一类又扩展了一个类,依此类推。

Java示例中的多级继承

Class B extends A
Class C extends B

层次继承

在层次继承中,从同一超类创建多个子类。

Java示例中的层次继承

Class B extends A
Class C extends A

多重继承

在多重继承中,一个类扩展了多个类。

Java不支持多重继承,因此Java类不能扩展多个类。

混合继承

如果我们组合了多个继承类型,那么这就是混合继承。混合继承可以是多重继承和分层,多层和多重等等的组合。