swift类、继承、接口


import Foundation

class Hello{

    var _name:String?="swift global"

    init(name:String){                    //定义类中有参数的构造方法
        _name=name;
        println("Hello , \(name)");
    }

    init(){                                //定义类中无参数的构造方法
        println("this is init method");
    }

    func sayHello(){                       //定义成员方法
        println("hello \(_name)")
    }

    class func meClass(){                 //定义类方法
        println("this is class method");
    }

}

class Hi:Hello{
    override func sayHello() {          //继承Hello类,并重载 其成员方法
        super.sayHello()                //调用父类的方法
        println("hloo override \(_name)");
    }
}

class HiChild:Hi{}                      //继承Hi类

extension Hi{                           //动态扩展 Hi 类,增加一个成员方法, 继承了Hi 类的子类也可以调用这个方法
    func sayHaha(){
        println("HHHaaa");
    }
}

var h1 = Hello()                        //实例Hello类,调用无參的init方法 ,输出this is init method
var h2 = Hello(name:"Hello init")     //调用有参的init方法,输出:Hello , Hello init

var hi = Hi()       //实例化子类,会调用父类的无參构造方法,输出this is init method
hi.sayHello() //调用类的方法,输出hello Optional("swift global") 和 hloo override Optional("swift global")
var h3 = HiChild()  //实例化,调用父类的父类的构造方法,输出this is init method
 h3.sayHaha()    //父类扩展了一个方法,则其子类可以调用这个方法,输出 HHHaaa h3.sayHello()   //调用父类的方法,输出hello Optional("swift global") 和 hloo override Optional("swift global")
Hello.meClass()  //调用类方法,输出this is class method
				
时间: 2024-10-31 17:04:12

swift类、继承、接口的相关文章

关于Swift类继承的一点小问题

别人已经写过很多关于Swift类继承的文章,这里我只是为了补充一点菜鸟教程继承上没有明面说明的东西,菜鸟教程关于类继承的网站:http://www.runoob.com/swift/swift-inheritance.html 关于这个问题,另一篇博客也写了这个: http://blog.csdn.net/binglan520/article/details/52662815 父类里面所有的属性 在定义时可以不给出初始值,在init函数里面赋予值就行了,而子类的属性 在定义时必须给出初始值,不然

类继承接口、使用接口实例化 与 使用类实例化

一. 接口不能实例化,用接口的实现类可以实例化,将实现类的对象在内存中的地址指向接口,这个接口就可以使用了 二. 实现接口的类 实例 = new 实现接口的类()// 这样用不好吗? //这样已经不是好不好的问题了,这样的话,要接口有什么用? //用接口就是让实例和实现类的耦合度降低. //让程序更加容扩展. 以下是问题之外的知识,想看可以往下,不想看跳过. 接口 实例 = new 实现接口的类A() 接口 实例 = new 实现接口的类B() 接口 实例 = new 实现接口的类C() 这样的

从人类社会的角度看OO社会中的类、接口、抽象类

引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的“社会”关系,从而让我们抛弃书上的那些死记硬背的概念,快速理解他们的区别与联系? 如果大家觉得还有必要把这块更新的更好,还请多多反馈. 如果觉的对您有用还请点击 “推荐”下,我会持续更新更多新的内容. 古老的传说 相传盘古开天劈地后,女娲一天在黄河边梳头时,突发奇想以泥土仿照自己抟土造人,创造并构建人类社会.后来又替人类立下了婚姻制度,经过一代又一

C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义(转载)

C#与Java对比学习:类型判断.类与接口继承.代码规范与编码习惯.常量定义 类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 instanceof 符号判断 类与接口的继承: C#:public class MDataRow : List<MDataCell>, IDataRecord, ICustomTypeDescriptor Java:publi

Java泛型:泛型的定义(类、接口、对象)、使用、继承

地址   http://blog.csdn.net/lirx_tech/article/details/51570138 1. 设计泛型的初衷: 1) 主要是为了解决Java容器无法记忆元素类型的问题: i. 由于Java设计之初并不知道会往容器中存放什么类型的元素,因此元素类型都设定为Object,这样就什么东西都能放了! ii. 但是这样设计有明显的缺点: a. 取出元素的时候必须进行强制类型转换(尽管集合在运行时里面元素的"运行时类型"不变,即元素的getClass返回的还是最初

[Java] 类和接口的初始化步骤 - 继承方面

类和接口在初始化化时,处理继承层级的方法不一样. 类继承的初始化:通过引用 static 字段,触发某个类的初始化,则声明该字段的类,以及该类的父类被初始化. 接口继承的初始化:通过引用 static 字段,触发某个接口的初始化,则声明该字段的接口会被初始化,但该接口的父接口不会被初始化. 想了解其他触发类初始化的方法,可参看另一篇博文 类的初始化步骤 . 注意一点,接口字段全部隐式地被修饰为 public, static, final .因此,所有的接口字段实际上都是 static 的,无论有

基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)

基类BaseOutput显式继承了一个接口IOutput,之后类TrackOutput继承BaseOutput,同一时候又继承了IOutput接口.假定IOutput有方法Output,这样在TrackOutput中就有两个Output方法,一个源于基类BaseOutput,于个源于接口IOutput.这样就引发了混乱.要怎么办?先看以下的一段代码 interface IOutput { void output(); } class BaseOutput : IOutput { void IOu

类与类、类与接口、接口与接口之间的继承个数问题

1.类与类之间可以表示为继承的关系,用extends关键字表示的.这是因为如果一个类即继承了A类, 又继承了B类,若AB有两个相似的方法,没办法确定继承哪一个方法,所以类的继承只能是一对一的.但是一个类可以有多个子类, 一个类只能有一个父类. 2.类与接口之间可以表示为实现的关系,用implements关键字表示的.一个类可以实现多个接口.因为接口中的方法都是抽象的方法,只有形式没有具体实现,在类中实现.3.接口与接口之间之间可以表示为继承的关系,用extends关键字表示的,一个接口可以继承多

Java类集(接口继承的关系)

类集的概念: 类集(Collection)就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充. 类集的特性: 这种框架是高性能的 框架必须允许不同类型的类集以相同的方式和高度互操作方式工作 类集必须是容易扩展和/或修改的 Java类集(接口继承的关系)

类的继承 接口interface/implements

 继承: 关键字:extends,使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类: public:       方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public.protected:本类和子类可以访问,外部对象不可以调用.private:      只能在本类访问,子类与外部对象都不可能调用.经过private标记的方法或者属性可以在继承类中重新定义,每一个类只能看到它自己定义