关于制作网站的方案,网站域名收费,郑州承接各类网站建设,深圳竞价托管类与结构#xff08;class struct#xff09;
面向对象的编程语言#xff0c;必不可少的基础元素#xff0c;类或者叫类型#xff0c;在仓颉中类可以抽象(abstract)、继承#xff08;:#xff09;#xff0c;公开#xff08;Public#xff09;或者私有class struct
面向对象的编程语言必不可少的基础元素类或者叫类型在仓颉中类可以抽象(abstract)、继承:公开Public或者私有Private。
使用class关键字定义类使用abstract关键字定义抽象类。类可以继承其他类使用:符号表示继承关系class类修饰符为public、private用于定义Class 是公开或者私有类可以继承自其他类或接口并且可以被其他类继承。类可以有初始化函init(Pram1,Pram2,...),反初始化函数为~init()。包含泛型的类在继承时候可以进行限定。
属性
mut关键字表明某个属性是可变的、可修改的否则默认情况下都是不可变的。
如
mut prop reading: Boolpublic open mut prop currentReadOffset: Int64{} 以下表示一个公开可读的属性二个公开可以读写的属性即可变的属性。 public prop pointers: IteratorBytesPointerMeta{get(){buffer.pointers}}public mut prop currentReadOffset: Int64{get(){buffer.currentReadOffset}set(value){buffer.currentReadOffset value}}public mut prop currentWriteOffset: Int64{get(){buffer.currentWriteOffset}set(value){buffer.currentWriteOffset value}}类型限定
在类继承时候可以对当前类型进行限定如下
public abstract class ByteBuffer : CollectionByte Hashable EquatableByteBuffer {}抽象类ByteBuffer 同时继承Collection 类型以及 Hashable 、 Equatable 两个接口。
public class ByteBufferPoolT : Resource where T : ByteBuffer {}类型ByteBufferPool 继承自 Resource其中T必须是ByteBuffer的子类。
反初始化成员函数~init()
在函数对象的声明周期的最后即对象在被销毁之间可以在~init()中进行明确的释放操作。不需要手动调用基础语言运行时会自己调用。
public class Release{~init(){doRelease(handle, shouldBeReleased, released)}//releaseArrayRawDataByte(h) 系统函数private static func doRelease(handle: ?CPointerHandleByte,shouldBeReleased: Bool, released: AtomicBool){if(shouldBeReleased released.compareAndSwap(false, true)){if(let Some(h) - handle){unsafe{releaseArrayRawDataByte(h)}}}}
}类型扩展Extend
这是个非常厉害的特性这个特性可以让你扩展已经存在的类型的能力让这个类型拥有更多的能力比如让这个类多实现一些接口或者给其增加一些成员函数等。
extend ResultT : ToString where T : ToString {public func toString(): String {match (this) {case Ok(v) return v.toString()case Err(v) return v.message}}
}