举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > java继承类怎么写 Java 继承

java继承类怎么写 Java 继承

2023-03-17 07:17 Java教程

java继承类怎么写 Java 继承

java继承类怎么写

Java继承是一种面向对象的特性,它允许一个类从另一个类中继承属性和方法。它使得子类可以重用父类的代码,而不必重新实现相同的功能。Java中的所有类都是Object的子类,因此Object是Java中最高层次的基础。

要创建一个子类,需要使用extends关键字:

public class SubClass extends SuperClass { 
    // code here 
}

在上面的代码中,SubClass是子类,SuperClass是它的超类。在这里,SubClass将从SuperClass中“复制”所有属性和方法。这意味着SubClass将拥有SuperClass中定义的所有成员变量和成员方法。

此外,子类也可以定义自己的成员变量和成员方法。如果子类声明了与超类相同名字的成员变量或者成员方法(即覆盖了超类中相同名字的成员变量或者成员方法),则会使用子类中声明的版本而不是超 类中声明的版本。

此外,子 类还可以通过super关键字来引用超 类中声明 的 成 员 变 量 或 成 员 方 法 。 这 意 味 着 子 类 可 以 访 问 超 级 的 成 员 (例如 : super.memberVariableName )并且可以调用超 级 的 成 员 方 法 (例如 : super.memberMethodName() ) 。

此外,Java还支持多重集成——即一个子 级 可 以 有 多 个 超 级 。 要 实 现 多重集成,必须使用implements关键字来声明该子 级 实 现 多 个 超 级 :

 public class Subclass extends Superclass1 implements Superclass2, Superclass3 {   // code here } 

 < p >在上面的代表中,Subclass将从Superclass1,Superclass2,Superclass3三个超集中“复制”所有属性和方法.因此,Subclass将拥有三个超集定义的所有成员变量和成员方法.

Java 继承

Java面向对象设计 - Java继承

子类可以从超类继承。超类也称为基类或父类。子类也称为派生类或子类。

从另一个类继承一个类非常简单。我们在子类的类声明中使用关键字extends,后跟超类名称。

Java不支持多重继承的实现。

Java中的类不能有多个超类。

语法

一般的语法是

<class modifiers>class <SubclassName> extends <SuperclassName> {
    // Code for the   Subclass
}

例子

以下代码显示如何使用从Employee类创建Manager类。

class Employee {
  private String name = "Unknown";
  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
}
class Manager extends Employee {
}
public class Main {
  public static void main(String[] args) {
    // Create an object of the Manager class
    Manager mgr = new Manager();

    // Set the name of the manager
    mgr.setName("Tom");

    // Get the name of the manager
    String mgrName = mgr.getName();

    // Display the manager name
    System.out.println("Manager Name: " + mgrName);
  }
}

上面的代码生成以下结果。

注意

我们没有为Manager类编写任何代码,它的工作原理与Employee类相同,因为它继承自Employee类。

您可以使用Manager类的构造函数创建一个管理器对象。

Manager mgr = new Manager();

创建管理器对象后,Manager对象的工作方式与Employee对象相同。

我们对manager对象使用了setName()和getName()方法。

mgr.setName("Tom"); 
String mgrName  = mgr.getName();

Manager类不声明setName()和getName()方法。Manager类“扩展Employee"。

当一个类从另一个类继承时,它继承它的超类成员,实例变量,方法等。

对象父类

对象类是默认超类。

所有类都隐式继承自Object类。因此所有类的对象都可以使用Object类的方法。

public class P {

}

类P从Object扩展,即使我们没有指定父类。

Object类声明了hashCode()和toString()方法。因为Employee类是Object类的一个子类,它可以使用这些方法。

Employee emp = new Employee();
int hc  = emp.hashCode(); 
String str = emp.toString();

Employee类不使用extends子句指定其超类。这意味着它继承自Object类。

Object类声明了hashCode()和toString()方法。因为Employee类是Object类的一个子类,它可以使用这些方法。

向上转换和向下转换

现实世界中的“is-a”关系在软件中转化为继承类层次结构。

例如,Manager是特定类型的Employee。 Employee是一种特定类型的Object。

当您在继承层次结构中向上移动时,将从特定类型移动到更一般的类型。

从子类到超类的赋值称为上转换,它在Java中始终允许。

class Employee {
  private String name = "Unknown";

  public void setName(String name) {
    this.name = name;
  }

  public String getName() {
    return name;
  }
}

class Manager extends Employee {
}

public class Main {
  public static void printName(Employee emp) {
    String name = emp.getName();
    System.out.println(name);
  }
  
  public static void main(String[] args) {
    Employee emp = new Employee();
    emp.setName("Tom");

    Manager mgr = new Manager();
    mgr.setName("Jack"); // Inheritance of setName() at work

    // Print names
    printName(emp);
    printName(mgr); // Upcasting at work
  }
}

为子类变量分配超类引用称为向下转换。

向下转换与向上转换相反。

在向上转换中,赋值向上移动类层次结构,而在向下转换中,赋值向下移动类层次结构。

我们必须在向下转换中使用类型转换。

Manager mgr = (Manager)emp;  // OK. Downcast  at work

上面的代码生成以下结果。

instanceof运算符

Java instanceof运算符帮助我们确定引用变量是否有对类或子类的引用。

它需要两个操作数,并计算为布尔值true或false。

它的语法是

<Class Reference Variable> instanceof <Class Name or Interface>

如果<Class Reference Variable>引用类<Class Name>或其任何后代的对象,instanceof返回true。

如果引用变量为null,instanceof总是返回false。

我们应该在向下转换之前使用instanceof运算符。

Manager mgr = new Manager(); 
Employee emp = mgr;
if (emp instanceof Manager)  {
    // downcast  will succeed 
    mgr = (Manager)emp;
}else  {
    // emp is not  a  Manager type
}

禁用继承

我们可以通过声明类final来禁用子类。

最终的类不能被子类化。

下面的代码声明了一个名为MyClass的最终类:

public final  class  MyClass{
   
}

我们也可以声明一个方法为final。最终方法不能被子类覆盖或隐藏。

public class A  {
    public final  void  m1()  {
    
    }

    public void  m2()  {
    }
}
阅读全文
以上是VUE中文网为你收集整理的java继承类怎么写 Java 继承全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们