首页 > 其他分享 >面向对象---继承

面向对象---继承

时间:2022-09-19 18:23:24浏览次数:53  
标签:balance 继承 子类 class --- 面向对象 父类 public

什么是继承 --- 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是有违常理的,不合逻辑。

标签:balance,继承,子类,class,---,面向对象,父类,public
From: https://www.cnblogs.com/sevenxx/p/16708602.html

相关文章

  • javascript的类的继承
     先看下java的继承,java的继承是发生在类之间,他们的对象之间没有继承关系,子类的对象通过子类创建对象,同时对象中不存储函数只有数据,函数需找到类定义以后读取里面的函数,类......
  • P7856 「EZEC-9」模糊众数 解题报告
    P7856「EZEC-9」模糊众数解题报告:题意给定一个长度为\(n\)的序列,一次操作可以将某个数字加一,多次询问一个数\(x\),求使得\(x\)称为序列众数至少要多少次操作。\(1......
  • Linux系列---【如何解决cpu飙高问题?】
    1.使用top命令打开dashboard,如下图2.经过上图中4步之后,可以得到十六进制9847的进程号,然后到a.txt文件中查找即可定位到对应的线程。3.如过找不到,按shift+h查找出哪个线......
  • 了解3D世界的黑魔法-纯Java构造一个简单的3D渲染引擎
    简介: 对于非渲染引擎相关工作的开发者来说,可能认为即使构建最简单的3D程序也非常困难,但事实上并非如此,本篇文章将通过简单的200多行的纯Java代码,去实践正交投影、简单三......
  • Linux中的RCU机制[一] - 原理与使用方法【转】
    转自:https://zhuanlan.zhihu.com/p/89439043RCU机制是自内核2.5版本引入的(2002年10月),而后不断完善,其在Linux的locking机制中的使用占比也是逐年攀升。基本原理RCU的基......
  • ABC 269 E - Last Rook(交互题)
    https://atcoder.jp/contests/abc269/tasks/abc269_e有一个N*N的棋盘和N辆车。现在,n-1辆车被放在棋盘上,你必须放置1辆车,满足以下所有条件。没有一行包含两个或更多的车......
  • 传输层详解-TCP建立断开连接过程、TCP和UDP封装报文格式和应用、TCP中的四种计时器)
    一、传输层的概念网络层提供点到点的连接,传输层提供端到端的连接。在网络通讯的过程中,依靠网络层达到发现对端的目的,在发现对端之后,我们需要精准的找到想要访问的进程/服......
  • tp5-实现资料下载&后台文件上传DOX/PDF/DOCX
    后台上传: 后台代码:<dl><labelclass="item-label"for="my-file-input">文件:</label><ahref="{$info.file_url}">{$info.file_name}</a>......
  • 华为od-性格测试
    参考资料非常推荐【转】华为性格测试怎么过推荐华为-性格测试攻略题目题目总共有五十多道每个题目给三个选项,让你选择哪个行为最符合你,哪个行为最不符合你选项......
  • 数据结构与算法【Java】07---树结构基础部分
    前言数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就......