面向对象之继承

Python 面向对象编程 二 继承和多继承 多重继承的概念适用于高级面向对象设计,其中对象与多个对象有关系,但从多个类继承时必须小心,特别是如果这些类是从一个公共超类继承的。同样,一个类可以从另一个类继承元素。在简单继承或基本继承中,类是从单个父类派生的。在Python中,当一个类从另一个类继承时,它通常会继承组成父类的所有元素,但这可以通过使用命名约定(如双下划线)和访问修饰符来控制。OOP中的继承概念类似于现实世界中的继承,在现实世界中,孩子们在自己的特征之上继承了父母的一些特征。通过代码可以看出,我们可以在通过子类的实例访问父类的属性和方法。 阅读详情

@(笔记)[面向对象|MarkDown|我的博客]
07.12

面向对象之继承

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。

  1. 子类拥有父类非private的属性和方法。
  2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
  3. 子类可以用自己的方式实现父类的方法。(重载)

继承 (类与类的关系)

有相同的属性和相同的行为时,定义为父类,
其他的子类只需要写特有的属性和方法.

在面向对象中,可以通过扩展一个已有的类,并继承该类的属性和行为,
来创建一个新的类,从而达到代码的复用.

继承是所有OOP语言不可缺少的部分,
在java中使用extends关键字来表示继承关系。
当创建一个类时,总是在继承,如果没有明确指出要继承的类,
就总是隐式地从根类Object进行继承。

继承不会继承父类的构造方法
因为:
1. 语法上如果继承来了父类的构造方法,但是类名是父类名,跟子类名不一样
2. 在面向对象的思想上说不通

类与类的关系

  • has a (组合) -属性
  • is a (继承)
  • use a (使用) -参数或局部变量

关于私有属性 有没有继承 能不能继承 算不算继承?
私有属性在子类的存储空间当中他是切实存在的
子类可以继承父类的所有成员跟方法,继承下来不代表可以访问,要访问得看访问控制规则。私有属性也可以继承,不过根据访问控制规则,私有属性虽继承下来却不可以访问的,只有通过public的方法才能访问继承下来的私有属性。

B继承A类,。A类中的私有属性,到了B会怎么样,能继承、访问吗?
答案是:如果A中的属性有增加setter getter 方法,可以访问的:
比如下面这段代码:

class Person {
    private String name;
    private int age;
    public Person() {
    }
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }
}
class Man extends Person {

}

类Man继承于Person类,这样一来的话,
Person类称为父类(基类),Man类称为子类(导出类/派生类)。
如果两个类存在继承关系,则子类会自动继承父类的方法和变量,
在子类中可以调用父类范围访问修饰符允许的方法和变量。

在上面的例子中,子类实例可以通过setter方法访问父类的私有属性,所以就证明了子类是继承了父类的全部属性和方法的.
只是这样就破坏了封装性,

在java中,只允许单继承,也就是说 一个类最多只能显示地继承于一个父类。
但是一个类却可以被多个类继承,一个类可以拥有多个子类。

子类继承父类的成员变量

当子类继承了某个类之后,便可以使用父类中的成员变量,
但是并不是完全继承父类的所有成员变量。具体的原则如下:
- 能够继承父类的public和protected成员变量;能够继承父类的private成员变量(用setter,getter方法来使用private属性);
- 对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
- 对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用

子类继承父类的方法

  • 对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
  • 对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。

构造器

  子类是不能够继承父类的构造器,它只能够被调用.
  值得注意的是,如果父类的构造器都是带有参数的,则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。

这是为什么呢?:
因为使用子类时候,实例化一个子类对象时,然后就可以调用父类的public属性和方法;
但是在调用父类属性和方法之前,我们并没有实例化父类对象,所以这个时候,
必须在子类构造器中调用父类构造器;
- 子类 a = new 子类();
- 如果父类没有无参构造器,则在子类构造器中必须显示的用super调用父类构造器.
- 如果父类有无参构造,则可以不写super,系统自动调用父类无参构造;
当new一个子类时,调用子类构造器,然后子类构造器中调用父类构造器,

看下面这个例子就清楚了:

class Shape {
    protected String name;
    public Shape(){  //无参构造方法 作用是初始化name
        name = "shape";
    }
    public Shape(String name) { //有参构造方法  new shape( "张三")
        this.name = name;
    }
}
class Circle extends Shape { //Circle 继承 Shape 
    private double radius;
    public Circle() { //无参构造方法
        radius = 0;
    }
    public Circle(double radius) { 
        this.radius = radius;
    }
    public Circle(double radius,String name) {
        this.radius = radius;
        this.name = name;
    }
} 

这样的代码是没有问题的,如果把父类的无参构造器去掉,则下面的代码必然会出错:

  改成下面这样就行了:

class Shape {
    protected String name;
    //public Shape(){
        //name = "shape";
    //}
    public Shape(String name) {
        this.name = name;
    }
}
class Circle extends Shape {
    private double radius;
    public Circle() {
        radius = 0;
    }
    public Circle(double radius) {
        this.radius = radius;
    }
    public Circle(double radius,String name) {
        super(name);
        this.radius = radius;
        this.name = name;
    }
} 

子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过

super

super主要有两种用法:
1. super.成员变量/super.成员方法;
2. super(parameter1,parameter2….)

  第一种用法主要用来在子类中调用父类的同名成员变量或者方法;第二种主要用在子类的构造器中显示地调用父类的构造器,要注意的是,如果是用在子类构造器中,则必须是子类构造器的第一个语句。

this和super关键字的区别
可以在我的另一篇博客中看到

向上转型

在上面的继承中我们谈到继承是is-a的相互关系,猫继承与动物,所以我们可以说猫是动物,或者说猫是动物的一种。这样将猫看做动物就是向上转型。如下:

public class Person {  
    public void display(){  
        System.out.println("Play Person...");  
    }  

    static void display(Person person){  
        person.display();  
    }  
}  

public class Husband extends Person{  
    public static void main(String[] args) {  
        Husband husband = new Husband();  
        Person.display(husband);      //向上转型  
    }  
}  

在这我们通过Person.display(husband)。这句话可以看出husband是person类型。
将子类转换成父类,在继承关系上面是向上移动的,所以一般称之为向上转型。由于向上转型是从一个叫专用类型向较通用类型转换,所以它总是安全的,唯一发生变化的可能就是属性和方法的丢失。这就是为什么编译器在“未曾明确表示转型”或“未曾指定特殊标记”的情况下,仍然允许向上转型的原因。

这也是多态的一种,关于多态,将在下一篇博客中总结.

常见的面试笔试题

1.下面这段代码的输出结果是什么?

public class Test {
    public static void main(String[] args)  {
       new Circle();
    }
}
class Draw {
    public Draw(String type) {
        System.out.println(type+" draw constructor");
    }
}
class Shape {
    private Draw draw = new Draw("shape");
    public Shape(){
        System.out.println("shape constructor");
    }
}
class Circle extends Shape { 
    private Draw draw = new Draw("circle"); 
    public Circle() {
        System.out.println("circle constructor");
    }
} 

输出 1.shape draw construtor
2.shape construtor
3.circle draw constructor
4.circle constructor

  这道题目主要考察的是类继承时构造器的调用顺序和初始化顺序。要记住一点:父类的构造器调用以及初始化过程一定在子类的前面。由于Circle类的父类是Shape类,所以Shape类先进行初始化,然后再执行Shape类的构造器。接着才是对子类Circle进行初始化,最后执行Circle的构造器。

类继承时构造器的调用顺序和初始化顺序
enter image description here

在子类中访问一个变量时的查找顺序(查找方法一样)
enter image description here

重写 Override

发生在继承的时候,子类方法跟父类方法重名,发生了覆盖,重写子类方法的实现;
1. 方法名相同
2. 参数列表相同
3. 返回类型相同
4. 访问修饰符必须大于等于父类
5. 抛出的异常不能比父类多

隐藏和覆盖的区别

  • 隐藏发生在子类属性名跟父类属性名同名的时候,在子类中调用重名的属性的时候,只能访问到子类的那个属性;如果要调用父类的同名属性,必须用super.属性名调用
  • 覆盖发生在子类方法名跟父类方法名相同的时候,也要用super.方法名()来调用父类中的同名方法;

重载和重写

重写:是有继承关系的2个类发生的
重载:一个类中有多个相同的方法名

总结:

继承:把具有相同属性,相同行为的类抽取出来,作为一个父类,然后另一个类去继承这个类,那么这个类就有了父类的属性和方法

关系:
is a

特点:
内存上,叠加

效果:
子类拥有父类的属性和行为方法,但是不继承父类的构造方法;

构造调用顺序:
先父类构造,再子类构造
修改父类的行为–>重写

谨慎继承
上面讲了继承所带来的诸多好处,那我们是不是就可以大肆地使用继承呢?送你一句话:慎用继承。
首先我们需要明确,继承存在如下缺陷:
1、父类变,子类就必须变。
2、继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。
3、继承是一种强耦合关系。
所以说当我们使用继承的时候,我们需要确信使用继承确实是有效可行的办法。那么到底要不要使用继承呢?《Think in java》中提供了解决办法:问一问自己是否需要从子类向父类进行向上转型。如果必须向上转型,则继承是必要的,但是如果不需要,则应当好好考虑自己是否需要继承。

Object类

Object类是所有类的直接父类,如果声明一个类时没有显式的继承另一个类,那么这个类就会继承Object类,从而拥有了Object类中的所有方法,数组也不例外.

Object类的中方法

Object类一共有11个方法,作为祖宗类,而这11个方法还得以保留,说明这些方法的通用性很高,所以我们都必须掌握.

  1. protected Object clone() 创建并返回此对象的一个副本
  2. boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。
    • 对于Object类中,equals的底层实现就是使用的”==”运算符,而这并不能满足我们对对象的比较,所以必须重写,在String类中就重写了此方法
    • 基本思路:
      • 先判断是否是同一个类的实例,如果是就返回true;
      • 如果不是,再分别比较每个属性值,如果有一个不同,就返回flase
      • 如果都相同,就返回true
  3. protected void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
  4. Class<?> getClass() 返回此 Object 的运行时类(反射中用到)。
  5. int hash Code() 返回该对象的哈希码值
  6. void notify() 唤醒在此对象监视器上等待的单个线程
  7. void notifyAll() 唤醒在此对象监视器上等待的所有线程
  8. String toString() 返回该对象的字符串表示
    • 此方法的实现:
      • getClass().getName() + '@' + Integer.toHexString(hashCode())
    • 如果不重写这个此方法,返回的是 类名@引用值,对于我们来说没用,所以一般使用toString方法时都需要重写
  9. void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
  10. void wait(long timeout) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待
  11. void wait(long timeout, int nanos) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
NPU、CPU和GPU NPU、CPU和GPU是三种不同类型的处理器,它们各自有不同的设计特点和应用场景。NPU(Neural Processing Unit,神经网络处理单元)是一种专门为加速神经网络计算而设计的处理器。 阅读详情

相关推荐

SPICE模型入门到精通

文章目录前言一、SPICE是什么?二、1. 前言 由于笔者的毕业设计与功率半导体器件建模相关,需要用到SPICE软件来建模,在这记录一下从零开始的SPICE学习历程~ 一、SPICE是什么? 电子产品的设计一般先从功能框图开始,然后细化到原理图,还要经过很调试验证过程,最终才能完成。调试和验证的过程复杂而繁琐,在设计集成电路时更是如此,在制造之前急需验证集成电路的功能。 根据电路理论,人们可以建立起节点方程和回路方程,通过解这些方程组成的方程组就可以得到结果,也就是说可以通过计算来获得电路的工作情况。但

qq_42031914的博客 7万+

面向对象--继承

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承(例如儿子继承父亲财产)类似。继承可以理解为一个类从另一个类获取方法和属性的过程。如果类B继承于类A,那么B就拥有A的方法和属性。...

简之恨寒的博客 2709

FPGA优质开源项目 – UDP万兆光纤以太网通信

本文开源一个FPGA项目:UDP万兆光通信。文章末尾有该工程源码获取方式,有需要的小伙伴可以点赞、分享支持一下~

cjx_csdn的博客 4766

面向对象——继承

继承,是面向对象的三大特征之一。通过继承,子类获得父类的部分成员变量和方法,从而降低了整体代码的冗余。而子类可以获得父类哪些的方法和数据呢,如何改进父类的方法呢?今天我们开始学习有关Java继承的知识。

weixin_46703164的博客 944

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 154

ZLMediaKit在Windows下启用WebRtc编译(64位)

准备软件 cmake-gui vs2017 已经编译好的windows版本openssl(下载地址) 当然,你完全可以自己按照openssl的官网教程自己编译windows版本的openssl libsrtp编译安装 首先,需要将下载好的openssl解压并添加到环境变量。如下图,将下图路径添加到环境变量 其次,下载libsrtp(下载地址) 下载后解压并新建build文件夹,如下图: 在合适位置新建文件夹放置install后的srtp文件,如"D:\develop20..

byna11sina11的博客 1万+

面向对象的继承

1、认识对象的原型 JavaScript当中每个对象都有一个特殊的内置属性 [[prototype]],这个特殊的对象可以指向另外一个对象。 那么这个对象有什么用呢? 当我们通过引用对象的属性key来获取一个value时,它会触发 [[Get]]的操作; 这个操作会首先检查该属性是否有对应的属性,如果有的话就使用它; 如果对象中没有改属性,那么会访问对象[[prototype]]内置属性指向的对象上的属性; 那么如果通过字面量直接创建一个对象,这个对象也会有这样的属性吗?如果有,应该如何获取这个属性呢?

浮游的博客 914

基于matlab的主成分分析的人脸二维码识别系统

人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 977

JS面向对象及继承

创建对象的方法及对象继承的方式。像组合继承不共享引用类型属性,它结合原型链继承和构造函数继承的优点,通过在子构造函数中调用父构造函数来继承属性,同时将子构造函数的原型设置为父构造函数的实例......

qq_53911056的博客 917

Windows 11 - 打开操作安全中心提示 “需要使用新应用以打开此 Windowsdefender 链接“ 解决方案(电脑更新了 Win11 系统版本后,想关闭病毒防护盾牌的时候提示打不开)

Windows 11 - 打开操作安全中心提示 "需要使用新应用以打开此 Windowsdefender 链接" 解决方案(电脑更新了 Win11 系统版本后,想关闭病毒防护盾牌的时候提示打不开),当您点击任务栏上要关闭安全中心防护设置时,这种情况打不开怎么解决,怎么办,Windows安全中心,病毒和威胁保护,账户保护,防火墙和网络保护,设备安全性。

🏆 前端领域优质创作者 1万+

Allan方差这个工具,怎么把它用的更顺手?(附Allan方差、动态Allan方差代码)

本文详细说明了Allan方差和动态Allan方差的计算过程,并通过递归运算和时间序列选择两种算法提高动态Allan方差的计算效率。文末提供了快速动态Allan方差计算代码。

victoryqian528的博客 374

【JavaScript】面向对象之继承

重学JavaScript06----- 面向对象之继承 文章目录重学JavaScript06----- 面向对象之继承继承1、了解原型链2、Object的原型3、通过原型链实现继承原型链继承的弊端4、借用构造函数继承借用构造函数也是有弊端的5、通过原型式继承函数继承6、寄生式继承函数7、寄生组合式继承 继承 继承可以帮助我们将重复的代码和逻辑抽取到父类中,子类只需要直接继承过来使用即可。 1、了解原型链 在真正实现继承之前,我们先来理解一个非常重要的概念:原型链。 从一个对象上获取属性,如果在当前对象中

m0_68324632的博客 1332

安装 miniconda linux

安装 miniconda linux

jacke121的专栏 1万+

C++ 面向对象之继承

继承是面向对象编程中的一个重要概念,它允许我们创建一个新类(派生类或子类),从一个已有的类(基类或父类)中继承成员变量和成员函数。这就好比子女继承父母的某些特征一样,派生类继承基类的属性和行为,并且可以在这个基础上进行扩展和修改。

zhoutao0213的博客 808

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

面向对象基础——继承

通过前面的案例,我们了解了面向对象的第一个特性——封装,即将属性和方法根据职责封装到一个抽象的类中本篇将为大家介绍面向对象的第二大特性——继承。

qq_65321713的博客 1074

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

什么是继承python_面向对象继承

Python 面向对象继承一 什么是面向对象的继承比较官方的说法就是:继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”。继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即...

weixin_39684052的博客 379

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python面向对象——继承和多继承

单继承: 面向对象的主要好处就是代码的重用,实现这一特点通过继承,继承创建的新类成为子类,被继承的类称为父类。 如果在子类中需要父类的构造方法就需要显示的调用父类的构造方法,在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。 下面我们开始来讲解继承和多继承 首先我们创建两个类, 父类:Father类  子类:Child 父类中属性为money,和一个方法pla...

qq_37235798的博客 2726

Python面向对象之继承

Python面向对象之继承,单继承,多继承,super(),私有属性/方法

ncu5509121083的博客 1988

Java面向对象:继承

Java面向对象:继承

weixin_58618735的博客 1335

面向对象————继承

即不能继承那些不能访问的方法。理论上子类会继承父类的全部成员变量,但是子类不能访问父类的私有成员变量,如果子类与父类在不同包中,子类也不能访问父类中具有默认访问权限的成员变量。(3)子类的每个构造方法都会隐式的调用父类的无参数构造方法,如果想调用父类的其他构造方法,必须使用super(参数列表)来显式调用。在子类的构造方法中,先调用父类的构造方法完成从父类继承来的那些成员变量,然后初始化子类中特有的成员变量。(3)子类中可以定义与父类中同名的成员变量,这时子类的成员变量会隐藏\覆盖父类中的同名成员变量。

weixin_59369438的博客 526

JavaScript面向对象的继承

大家好!今天来讲讲js中面向对象的继承,首先要明白继承:就是让一个没有某个属性或方法的对象能够使用另一个对象所具有的某个属性或方法。 先举一个简单的例子: 以上是一个简单的实例与实例之间的继承,规模较小。 继承主要是构造函数和构造函数之间的继承,共分为四种:1. 原型的继承; 2.构造函数的继承; 3.混合继承(组合); 4. ES6 class 继承。接下来具体介绍: 1 原型的继承分为两种,...

mollylee888的博客 444

C++面向对象之继承

其中Teacher为这个类的名称,也是子类 / 派生类冒号后面的public代表子类的继承方式而最后的Person就是父类 / 基类,也就是子类要继承哪个类。继承一共有三种继承,分别是:public、protected、private。这和类的访问限定符很相似。但是这个叫继承方法,而非访问限定符。父类中被不同访问限定符修饰的成员根据继承方式的不同,在子类中的权限也不同。类成员/继承方法public继承protected继承private继承父类的public成员子类的public成员。

2301_77037839的博客 1078

php面向对象怎么继承,php面向对象之继承

这篇文章主要介绍了关于php面向对象之继承,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下继承定义子类继承父类所有的——公有(public) 和 受保护(protected)属性和方法。使用关键字extends继承,一个类集成另一个,不能继承多个。相关专业名词子类、父类、基类、超类、派生类子类、派生类 ——> 继承于基类的类;父类、基类、超类指 ——> 被继承的类。...

weixin_42504833的博客 183
上一篇: 面向对象之封装
下一篇: 面向对象之多态
dong4go
博客等级 码龄12年 5粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值