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基础夯实系列之父类引用指向子类对象

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

javase子类父类继承关系图解

  • 2013年07月21日 19:48
  • 54KB
  • 下载

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

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

父类赋值给子类

  • 2013年06月07日 19:43
  • 25KB
  • 下载

父类引用指向子类对象

  • 2012年11月24日 15:59
  • 3KB
  • 下载

子类重写父类的方法应注意的问题

若想实现一个合格重写方法,而不是重载,那么必须同时满足下面的要求! 重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别。 (但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是...

子类、父类查询

  • 2014年01月01日 11:41
  • 26KB
  • 下载

子类为什么不能重写父类的静态方法

http://wx.233.com/share/Album/1411187 http://wx.233.com/share/Album/1411188 http://wx.233.com/shar...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Checklists学习日志之父类、子类、继承、重写
举报原因:
原因补充:

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