继承

作者: 雪燃归来 | 来源:发表于2022-02-07 18:07 被阅读0次

继承: 继承是从已有的类创建新类的过程
java只支持单继承
构造方法不能被继承
创建子类的对象时, 父类的构造方法也会被调用,为什么?
因为子类要使用到父类的数据,那么就要通过父类的构造方法来初始化数据
创建子类对象时会调用父类的默认构造方法

一、认识继承

1、继承一个父类,只能继承非私有的数据(属性和方法)

class Dog{
    private String name;
    private String sex;
    public void eat(){
        System.out.println("吃饭");
    }
}

class HomeDog extends Dog{
    public void print(){
        System.out.println(name + "我是一只家狗, wangwang");
    }
}

class HuskyDog extends Dog{
    public void show(){
        System.out.println(name+ "我是husky,我能跳舞");
    }
}
private修饰的属性不能被继承

2、protected访问权限修饰符,在继承关系中使用,在父类中使用protected修饰的属性或方法可以被子类继承

public class Test1 {
    public static void main(String[] args) {
        HomeDog homeDog = new HomeDog("旺财");
        homeDog.print();
    }
}

class Dog{
    protected String name;
    private String sex;
    public Dog(){
        System.out.println("我是Dog的构造方法");
    }
    public Dog(String name){
        this.name = name;
        System.out.println("这个会被执行吗?");
    }
    public void eat(){
        System.out.println("吃饭");
    }
}

class HomeDog extends Dog{
    public HomeDog(String name){
        this.name = name;
        System.out.println("我是HomeDog的构造方法");
    }
    public void print(){
        System.out.println(name + "我是一只家狗, wangwang");
    }
}

class HuskyDog extends Dog{
    public HuskyDog(){
        System.out.println("我是HuskyDog的构造方法");
    }
    public void show(){
        System.out.println(name+ "我是husky,我能跳舞");
    }
}

二、继承的特点

1、继承是发生在对歌类之间的
2、继承使用关键字 extends
3、JAVA只支持单继承,允许多层继承
4、被继承的类叫父类(超类),继承父类的类叫子类(派生类)
5、在父类中的非私有属性和方法可以被子类继承
6、protected(受保护的访问权限修饰符),修饰的属性和方法可以被子类继承
7、构造方法不能被继承
8、创建对象会调用构造方法,调用构造方法不一定是创建对象
9、实例化子类对象,会先调用父类的构造方法,如果父类中没有默认的构造方法,那么子类必须显式的通过super(...)来调用父类的带参构造方法,super也只能放在在子类构造方法中第一句。

public class Test1 {
    public static void main(String[] args) {
        HomeDog homeDog = new HomeDog("旺财");
        homeDog.print();
    }
}

class Dog{
    protected String name;
    private String sex;
    public Dog(String name, String sex){
        this.name = name;
        this.sex = sex;
        System.out.println("这个会被执行吗?");
    }
    public void eat(){
        System.out.println("吃饭");
    }
}

class HomeDog extends Dog{
    public HomeDog(String name){
        super(name, "公"); // 只能出现在第一句
        System.out.println("我是HomeDog的构造方法");
    }
    public void print(){
        System.out.println(name + "我是一只家狗, wangwang");
    }
}

class HuskyDog extends Dog{
    public HuskyDog(){
        super("husky", "母");
        System.out.println("我是HuskyDog的构造方法");
    }
    public void show(){
        System.out.println(name+ "我是husky,我能跳舞");
    }
}

三、继承的好处

1、提高代码的可用性
2、提高代码的维护行
3、让类与类之间产生关系,是多态的前提

四、继承的缺点

增强了类与类之间的耦合性

开发原则: 高内聚 低耦合

相关文章

  • 继承 继承

    属性拷贝 继承不单单能通过原型链实现,也能通过其他方式实现,属性拷贝就是其中一种方法。 通过属性拷贝也能实现继承子...

  • 继承(单继承,多继承)

    将共性的内容放在父类中,子类只需要关注自己特有的内容 python中所有的内容都是对象,所有的对象都直接或间接继承...

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • Python-学习之路-08 OOP -02

    单继承和多继承 单继承:每个类只能继承一个类 多继承:每个类可以继承多个类 单继承的多继承的优缺点 菱形继承/钻石...

  • 原型相关(二)

    1.继承 继承方式:接口继承(只继承方法签名)实现继承(继承实际的方法)ECMAScript只支持实现继承,并且主...

  • 继承

    继承的引入和概述 继承案例和继承的好处 继承的弊端 Java中继承的特点 继承的注意实现和什么时候使用继承 继承中...

  • Java面向对象三大特性之继承

    继承 一、继承的特点 Java只支持单继承单继承 多继承 单继承、多继承优缺点①单继承优点:提高了代码的复用性,让...

  • 7、面向对象的程序设计3(《JS高级》笔记)

    三、继承 许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际方法。由...

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • js之继承

    文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、 ES6 继承,以及 多继...

网友评论

      本文标题:继承

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