首页 > 编程语言 >Java继承

Java继承

时间:2023-02-02 20:58:32浏览次数:38  
标签:... Java 继承 void println class

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

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

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

为什么在java中使用继承?

对于方法覆盖(因此可以实现运行时的多态性),提高代码可重用性。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写(覆盖)。

Java继承的语法

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

extends关键字表示正在从现有类派生创建的新类。 “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);
    }
}
Java

执行上面代码得到以下结果 -

Programmer salary is:40000.0
Bonus of programmer is:10000
Java

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

java继承类型

在类的基础上,在java中可以有三种类型的继承:单一,多级和分层。在Java编程中,仅能通过接口支持多重和混合继承。稍后章节中我们将了解学习接口的应用。

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

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

(1). 单一继承示例

文件 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();
    }
}
Java

执行上面代码得到以下结果 -

barking...
eating...
Java

(2). 多级继承示例

文件 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();
    }
}
Java

执行上面代码得到以下结果 -

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

(3). 多级继承示例

文件 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
    }
}
Java

执行上面代码得到以下结果 -

meowing...
eating...
Java

问题:为什么在Java中不支持多重继承?

为了降低复杂性并简化语言,Java中不支持多重继承。想象一个:ABC是三个类。 C类继承AB类。 如果AB类有相同的方法,并且从子类对象调用它,AB类的调用方法会有歧义。

因为编译时错误比运行时错误好,如果继承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?
    }
}
//更多请阅读:https://www.yiibai.com/java/inheritance-in-java.html#article-start

标签:...,Java,继承,void,println,class
From: https://www.cnblogs.com/cnetsa/p/17087343.html

相关文章

  • Java this关键字
    在java中,this关键字有很多种用法。在java中,这是一个引用当前对象的引用变量。javathis关键字的用法如下:this关键字可用来引用当前类的实例变量。this关键字可用于调......
  • Java多线程
    多线程目录多线程概述多线程:好处与弊端JVM中的多线程解析如何创建一个线程呢?内存与线程名称获取内存:获取线程名称:多线程的创建一:继承Thread类继承Thread类步骤:继承Thread......
  • Java static关键字
    java中的static关键字主要用于内存管理。我们可以应用javastatic关键字在变量,方法,块和嵌套类中。static关键字属于类,而不是类的实例。静态(static)可以是:变量(也称......
  • java等于号的优先级顺序
    这个顺序是从右边往左边Map<Date,List<Map<String,Object>>>dataMap=dayBeforeCostList==null&&dayBeforeCostList.size()==0?null:dayBeforeCostList.str......
  • Request-原理和Request继承体系
    Request-原理Request继承体系request对象继承体系结构:ServletRequest--接口|继承HttpServletRequest--接口......
  • Java判断一个对象是否为指定类的实例
    一.描述instanceof它的作用是判断其左边对象是否为其右边类的实例,也可以判断这个对象是否是这个特定类或者是它的子类的一个实例,返回boolean类型的数据。二.用法booleanr......
  • java的构造函数和方法之间的区别
    Java构造函数构造器用于初始化对象的状态(数据)。构造函数不能有返回类型。构造函数隐式调用。如果没有指定任何构造函数,java编译器提供一个默认构造函数。构造函数名......
  • java8 stream 用法
    1privateList<User>users=Arrays.asList(2newUser("1001","John",16),3newUser("1002","Carly",17),4new......
  • 记:java.lang.IllegalArgumentException: DAY_OF_MONTH 报错
    查询的时候报错:月份中的天数错误原因: date日期列中有数据错误 修改数据库中错误的数据就可以了。......
  • JavaSE4️⃣OOP - 基本概念
    Java是一门面向对象的编程语言。从POP和OOP的区别,理解OOP。面向过程:POP(ProcedureOrientedProgramming)侧重点:需要做什么。实现:把问题模型分解成一个个执行......