资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第10章 OOP(下),10.1 类的继承/派生10.2 Public、Private、Protected10.3 Me、MyClass、MyBase10.4 接口(了解),继承/派生语法 Class ParentClass 基类或父类 End Class Class ChildClass 子类或派生类Inherits ParentClass End Class,10.1 类的继承/派生,继承/派生: 继承/派生:子类自动拥有父类的属性和方法, 扩展:子类可以定义自己的属性和方法。 覆盖(Override):子类可以覆盖(Override)父类的方法,即保持使用父类的某个方法名字和参数不变,但改变方法的定义,即重新写过程代码。 注意与重载(Overload)的区别,覆盖经常也被叫做重载。,10.1 类的继承/派生,继承方式:父类ParentClass可以是.NET的类,也可以是自定义的类。 继承目的:扩展父类。以类似滚雪球的方法不断地扩展代码。,10.1 类的继承/派生,10.1 类的继承/派生,VB.NET总祖先类: .NET框架的一切类都是从System.Object类直接或间接派生出来的。 .NET框架的一切类都直接或间接继承了System.Object类。 System.Object类的成员有Equals(Obj)、GetType()、ToString()、 GetHashCode() 所有对象都有上述的方法。,继承例子 1、基类或父类 Public Class personPublic name As StringProtected id As StringPublic Overridable Sub Show_ID()MsgBox(id)End Sub End Class,10.1 类的继承/派生,2、子类或派生类 Public Class studentInherits person 继承Public school_id As StringPublic Overrides Sub Show_ID()MsgBox(id & ”-” & school_id) 覆盖End Sub End Class,10.1 类的继承/派生,3、定义基类对象、子类对象Dim x As New personDim y As New Student 4、使用基类对象、子类对象x.Show_ID() 显示IDy.Show_ID() 显示ID-School_ID,10.1 类的继承/派生,1、Public属性:不能用对象引用(第九章) Public Class personPublic name As String End Class Dim x As New person MsgBox(x.name) 正确,10.2 Public、Private、Protected,1、Public属性:能在子类中引用 Public Class personPublic name As String End Class Public Class studentInherits person 继承Public Sub Show_Name()MsgBox(name) 正确End Sub End Class,10.2 Public、Private、Protected,2、Private属性:不能用对象引用 Public Class personPrivate name As String End Class Dim x As New person MsgBox(x.name) 错误,10.2 Public、Private、Protected,2、Private属性:不能在子类中引用 Public Class personPrivate name As String End Class Public Class studentInherits person 继承Public Sub Show_Name()MsgBox(name) 错误End Sub End Class,10.2 Public、Private、Protected,3、Protected属性:不能用对象引用。 Public Class personProtected name As String End Class Dim x As New person MsgBox(x. name) 错误,10.2 Public、Private、Protected,3、Protected属性:能在子类中引用。 Public Class personProtected name As String End Class Public Class studentInherits person 继承Public Sub Show_Name()MsgBox(name) 正确End Sub End Class,10.2 Public、Private、Protected,Me:在类定义中引用自己的对象。 Public Class personPublic name As StringPublic Sub Set_Name(ByVal name As String)Me.name=name 注意两个name的区别。End Sub End Class,10.3 Me、MyClass、MyBase,MyBase:在类定义中引用自己的基类。 1、定义基类 Public Class ParentPublic Overridable Sub Foo()MsgBox(”Parent”)End Sub End Class,10.3 Me、MyClass、MyBase,2、定义子类 Public Class ChildInherits ParentPublic Overrides Sub Foo() 覆盖MsgBox(”Child”)End SubPublic Sub F()MyBase.Foo() 使用基类的FooEnd Sub End Class,10.3 Me、MyClass、MyBase,MyClass:在类定义中引用自己的代码。 1、定义基类 Public Class ParentPublic Sub Foo()Show()End SubPublic Overridable Sub Show()MsgBox(”Parent”)End Sub End Class,10.3 Me、MyClass、MyBase,2、定义子类 Public Class ChildInherits ParentPublic Overrides Sub Show() 覆盖MsgBox(”Child”)End Sub End Class,10.3 Me、MyClass、MyBase,3、由于对象不同,Foo指向的代码不同 Dim x As New Parent x.Foo() 显示Parent Dim y As New Child y.Foo() 显示Child 4、在基类中修改:Public Sub Foo()MyClass.Show()End Sub,10.3 Me、MyClass、MyBase,5、对象不同,Foo指向的代码相同 Dim x As New Parent x.Foo() 显示Parent Dim y As New Child y.Foo() 显示Parent,10.3 Me、MyClass、MyBase,接口:与类相似,包含属性、成员函数定义,但只有成员函数的名称和参数定义,无代码实现。由于接口成员函数无代码实现,因此不能从接口直接定义对象。 接口语法:Public Interface IfaSub Init(ByVal x As String)End Interface 接口实现:定义一个类继承于某个接口,叫做“接口实现”。使用Implements语句。,10.4 接口,接口实现例子:Public Class clImplements IfaSub Init(ByVal x As String)MsgBox(x)End SubEnd Class 定义对象Dim a As New cl,10.4 接口,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号