往者不可谏 来者犹可追

面向对象---继承

什么是继承 --- Extends
继承:在现实世界中也是真实存在的。例如:父亲很有钱,儿子不努力也很有钱。

基本语法
class 子类 extends 父类

继承的作用:
基本作用:子类继承父类,代码可以得到复用。
主要作用:因为有了继承关系,才有了后期的方法覆盖和多态机制。

继承的相关特性
B类继承A类,则A类称为“超类(superclass)、父类、基类”,B类则称为“子类(subclass)、派生类、扩展类”。
java中的继承只支持单继承。C++才支持多继承。比如,java中不允许这样写代码---class B extends A,C()
虽然不支持多继承,但是有时候会产生间接继承的效果。例如,class C extends B,class B extends A。也就是说,C继承B,B继承A;其实,C还间接继承A。
java规定,子类继承父类,除了构造方法不能继承之外,其余的都可以继承。但是私有的属性无法在子类中直接访问。(父类中private修饰的不能在子类中直接访问,可以通过间接手段访问)。
java中的类没有显示的继承任何类,则默认继承Object类,Object类是java提供的根类。也就是说,一个对象生来就具有Object类型中的所有特征。
继承缺点:代码耦合度高,父类改变后会马上影响子类。
Object类是所有类的超类。类体系结构中的根。

点击查看代码
package jicheng;

public class ExtendsTest02 {
    public static void main(String[] args) {
        Account act = new Account();
        act.setActno("11111");
        act.setBalance(10000);
        System.out.println(act.getActno() + act.getBalance());

        CreditAccount ca = new CreditAccount();
        ca.setActno("22222");
        ca.setBalance(-1000);
        ca.setCredit(0.99);
        System.out.println(ca.getActno() + ca.getBalance() + ca.getCredit());
    }
}

class Account01{  //父类
    private String actno;
    private double balance;

    public Account01(){}

    public Account01(String actno, double balance) {
        this.actno = actno;
        this.balance = balance;
    }

    public String getActno() {
        return actno;
    }

    public void setActno(String actno) {
        this.actno = actno;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}


class CreditAccount01 extends Account01{  //子类,可以继承和父类相同的属性

    private double credit;

    public CreditAccount01(){}

    public CreditAccount01(String actno, double balance, double credit) {

        this.credit = credit;
    }



    public double getCredit() {
        return credit;
    }

    public void setCredit(double credit) {
        this.credit = credit;
    }
}

实际开发中,满足什么条件要用继承呢? 凡是采用“is a”能描述的,都可以继承。 例如: Cat is a Animal 猫是一个动物 Dog is a Animal 狗是一个动物 CreditAccount is a Account 信用卡账户是一个银行账户 ......

Q:子类继承父类方法后,能使用子类对象调用父类方法吗?
A:可以。子类继承父类后,这个方法就属于子类了。

Q:假设以后开发中,有一个A类,一个B类,A类和B类确实有重复的代码,那么他们两个之间就可以来继承吗?
A:不一定,还是要看一看它们之间是否能够使用“is a”

点击查看代码
class Customer{
   String name;  //名字
   //setter and getter
}
class Product{
    String name;  //名字
}
class Product extends Customer{
    
}
以上的继承就是失败的,因为product is a customer是有违常理的,不合逻辑。
posted @   你说你叫果郡王  阅读(54)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示