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
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

J2SE基础夯实系列之父类引用指向子类对象

父类引用指向子类对象应该说是比较困难的知识点,多态,面向对象等方面的知识看似很简单的话,其实包含着很多规范在里面。              从对象的内存角度来理解试试. ...

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

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

父类引用指向子类对象

例题:子类重写父类方法后的调用规则

例题: (单选题) 下面代码的输出是什么? public class Base { private String baseName= "base"; public Base(){...

子类、父类查询

  • 2014-01-01 11:41
  • 26KB
  • 下载

父类赋值给子类

  • 2013-06-07 19:43
  • 25KB
  • 下载

【Objective-C编程开发】关于子类重写父类初始化方法的争论

写出本篇文章实属不是我的本意,只因今天在相关技术群上有两个人争得耳红眼赤.今天趁着有空写出这个基础性内容,希望能帮到有些新手的疑惑。 观点A:认为在子类重写的init中没有必要进行self =[sup...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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