Checklists学习日志之父类、子类、继承、重写

原创 2015年11月19日 21:33:48

看教程里面各种陌生的代码污七糟八,想搞清楚几个概念,父类、子类、继承和重写

从定义一个类开始

class Vehicle
{
    var numberOfWheels: Int
    var maxPassengers: Int
    func description() -> String
    {
        return "\(numberOfWheels) wheels; up to \(maxPassengers) passengers."
    }
    init ()
    {
        numberOfWheels = 0
        maxPassengers = 1
    }
}

定义了一个类Vehicle,用init完成初始化(init函数比较特殊,前面没有func)。然后捏,我们想再定义一个类,这个类和之前的类有很多性质相同。但是我们不想再重新写了。该肿么办捏。我们可以这样:

class Bicycle: Vehicle
{
    override init ()
        
    {
        super.init()
        numberOfWheels = 2
    }
}
let bicycle = Bicycle()
print("Bicycle: \(bicycle.description())")

这里,我们用

class Bicycle: Vehicle

表明,新定义的Bicycle类和Vehicle类差不多。这里,Bicycle就是Vehicle的子类。相应的,Vehicle是Bicycle的父类。但是有一个问题,虽然差不多,但还是差一点,我们应该怎么做呢?比如这里,我们需要Bicycle类初始化时,numberOfWheels=2。好,我们需要对init进行改动。怎么改呢

    override init ()
        
    {
        super.init()
        numberOfWheels = 2
    }

这里,我们重写了init()。对,这就是重写override的意思。

同理,其它我们在父类定义的函数,也可以在子类中重写。比如,在父类中定义函数

    <pre name="code" class="objc">func initxcc ()
    {
        numberOfWheels = 10
        maxPassengers = 10
    }



我们可以在子类中重写

    func initxcc ()
    {
        numberOfWheels = 100
        maxPassengers = 100
    }


子类继承父类,并重写父类方法

在子类中可以根据需要对从父类中继承来的方法进行改造----方法的覆盖 ( 也叫重写)。 覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。 例如前面那个Student程序,它继承了Pe...
  • euxnijuoh
  • euxnijuoh
  • 2016年08月04日 00:04
  • 8150

关于继承时子类重写父类方法和覆盖父类变量的若干问题 (待进一步研究)

只有几种情况可以解释这种结果 1.this并不指向son在堆中创建的实例 2.创建对象时内存中使用了其他机制来保证这种结果的生成。 翻看了一下《深入理解Java虚拟机 JVM高级特性与最佳实践》...
  • jinhao505
  • jinhao505
  • 2014年08月18日 22:02
  • 2639

python中类的继承与方法重写

在python中继承中的一些特点: 1:在继承中基类的构造(init()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上se...
  • u013372487
  • u013372487
  • 2016年06月21日 18:01
  • 11596

java 继承中的重写父类方法

重写父类方法子类扩展(extends)了父类,子类是一种特殊的父类。子类可以获得父类所有的属性和方法,达到代码复用的目的。子类总以父类为基础增加新的属性和方法。但是有时候我们还需要重写(覆盖)父类的方...
  • fly_zxy
  • fly_zxy
  • 2015年05月10日 16:49
  • 8826

OC类的继承-重写父类的方法

//  main.m //  重写父类的方法 // //  Created by Goddog on 15/1/7. //  Copyright (c) 2015年 Goddo...
  • HUXU981598436
  • HUXU981598436
  • 2015年01月07日 21:31
  • 3996

子类继承父类,重写纯虚函数和虚函数时注意

今天遇到这么个问题,程序中定义了一个借口类,成员函数全是纯虚函数,我写的子类继承了这个接口类,但是报错提示说:无法实例化抽象类! 原因是这样的:子类继承父类时,必须重写父类的纯虚函数,函数名、返回类...
  • GK_2014
  • GK_2014
  • 2015年04月20日 21:51
  • 4480

Kotlin编程之父类和继承父类

Kotlin编程中:父类和继承父类,重写方法和重写属性
  • hexingen
  • hexingen
  • 2017年05月31日 17:36
  • 1451

java中父类子类的继承与函数重写

测试代码如下:/** * Father class */ class Father { public int count; public Father() { count...
  • ameyume
  • ameyume
  • 2011年03月29日 21:30
  • 6210

C++父类子类间函数重定义,虚函数重写(覆盖)以及重载

写这篇文章的时候我还是不太确定重定义,重写(覆盖),重载之间的确切的区分方法。下面是我今天的理解以及相关测试代码,以待后观!! 第一:简单的子类重定义父类成员函数(函数三要素:返回类型,函数名,参数...
  • cpp12341234
  • cpp12341234
  • 2016年08月12日 22:48
  • 4087

c++子类重写父类方法(Override)

#include #include using namespace std; /**   函数重定义,子类重写父类方法(Override)  */ class GeometricObjec...
  • pangqiandou
  • pangqiandou
  • 2017年03月09日 22:13
  • 2875
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Checklists学习日志之父类、子类、继承、重写
举报原因:
原因补充:

(最多只允许输入30个字)