美文网首页
Java 继承

Java 继承

作者: 持续5年输出bug | 来源:发表于2021-08-23 18:44 被阅读0次
继承

继承可以理解为一个对象从另一个对象获取属性的过程
1.通过 extends 关键字可以申明一个类是继承另外一个类而来的
2.类的继承是单一继承,一个子类只能拥有一个父类;
3.子类可以继承父类所有非私有成员属性和方法;
4.父类不可以访问子类的特有成员。
5.子类可以通过方法重写改变从父类继承的方法(除父类构造方法外)。
6.父类的构造方法不能被子类继承和重写。

// 以下分别定义和封装了三个成员属性以及成员属性的getter/setter方法、构造方法(带参和无参)、成员方法
package com.imcoc.animal;

public class Animal {
    private String name; // 私有属性
    private int month; // 私有属性
    private String pries; // 私有属性

    public Animal() {}
    public Animal(String name, int month) {}
    public int getMonth() {
        return month;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void run() {
        System.out.println(this.name+"在跑动");
    }
}

1.子类通过 extends 关键字继承父类Animal的非私有成员属性和方法
public class Dogs extends Animal { // 代码块}
2.一个子类只能有一个父类,但是一个父类可以有多个子类

//子类拥有自己的一些成员属性和方法
public class Dogs extends Animal {
    private double weight;

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public void eat() {
        System.out.println(this.getName() + this.weight + "斤重,在吃狗粮");
    }

    public void other() {
        System.out.println(this.getName() + "是" + this.getBreeds() + "品种");
    }
}

3.子类可以访问父类的非私有成员属性和方法

package com.imcoc.test;
import com.imcoc.animal.Dogs;
public class Test {
    public static  void main(String[] args){
        Dogs dogs = new Dogs();
        dogs.setName("花花"); // 可以访问父类的setName()方法 注意这里是setName()方法不是name 成员属性
        dogs.setWeight(2);
        dogs.setBreeds("中华田园犬"); // 可以访问父类的setBreeds()方法
        dogs.run(); // 可以访问父类的方法
        dogs.other();
    }
}

4.父类不可以访问子类的成员属性和方法

    Animal animal = new Animal();
    animal.eat(); // 这样写报错的

以下只能.出的方法和属性都是Animal父类自己的


父类不可以访问子类的成员属性和方法.png

5.方法重写
a.以下要素必须与父类继承的方法完全一致:返回值类型、方法名、参数类型、顺序、个数;
b.要定义在有继承关系的子类中 *
c.
方法的访问修饰符在一定范围内允许与变化,但重写的方法访问修饰符范围要>=父类访问修饰符*
d.与方法的参数名无关

public class Dogs extends Animal {
    public void run() { //子类重写了父类的run 方法
        System.out.println(this.getName()+"在睡觉");
    }
}

测试打印输出

public class Test {
    public static  void main(String[] args){
        Dogs dogs = new Dogs();
        dogs.setName("花花");
        dogs.run(); // 此时打印输出不再是父类定义的“花花在跑动” 而是“花花在睡觉”
    }
}

6.虽然重写仅限制在方法层面,但是在子类中也是可以定义与父类重名的属性

// 在父类中定义 character 成员属性
public String character="调皮";
// 在子类中重写 character
public String character="温顺";
// 测试
 System.out.println(dogs.character); //  打印结果 温顺

相关文章

  • Java继承

    一、Java继承详解 Java继承目录:1.为什么要”继承“?2.继承的类型2.1 单继承2.2 多重继承2.3 ...

  • Java继承

    Java继承 一、继承类型 Java不支持多继承,但是支持多重继承 二、继承的特性 子类拥有父类非 private...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • java培训专家介绍java的特性之:继承

    java培训专家介绍java的特性之:继承 什么是继承?java特性继承又是什么?在线教育平台专家为你解答! 多个...

  • JAVA 核心笔记 || [7] 继承

    继承 被继承的类为 基类 或者 父类 类 只能单继承 不可同时继承多类 Animal.java Dog.java ...

  • 继承

    java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是可实现多接口。 1:成员变量。当子父类...

  • 2017-12-29

    Java学习日记(4) 主要谈一下——继承extends 个 Tips : Java不像c++,Java是单继承(...

  • JAVA核心技术总结(五六章)继承&接口与内部类

    第五章 继承 在Java中,所有的继承都是公有继承,没有C++的私有继承和保护继承 Java同C++一样,子类不能...

  • Java初级笔记No.3(更新中)

    2018.7.26 1、Java中的继承 Java中使用extends关键字来说明继承关系。 2、继承的特性 ja...

  • Java中的继承

    Java中的继承 Java 继承 什么是继承 继承是用来描述“is-a”的关系;如果说两个对象A和B,若可以描述成...

网友评论

      本文标题:Java 继承

      本文链接:https://www.haomeiwen.com/subject/nilfiltx.html