面向对象——(7)抽象类
2014-02-25 17:39
155 查看
抽象类通常代表一个抽象概念,它提供了一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。
注意:
1、抽象类不能实例化
2、抽象方法必须被子类重写的方法,不重写的话,它就没有存在的意义了。
3、如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。
4、不能用sealed修饰符修改抽象类,这意味着抽象类不能被继承。
★抽象方法和虚方法有什么区别?
抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
重写的子类虚函数就是被覆盖了。
★抽象方法有哪些特性?
抽象方法是隐式的虚方法。
只允许在抽象类中使用抽象方法声明。
因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号({})。
★什么是sealed修饰符?
sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。
在类声明中使用 sealed 修饰符可防止继承此类。
加上下面这句话时就会出错:
注意:
1、抽象类不能实例化
2、抽象方法必须被子类重写的方法,不重写的话,它就没有存在的意义了。
3、如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。
4、不能用sealed修饰符修改抽象类,这意味着抽象类不能被继承。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication26 { class Program { //调用 static void Main(string[] args) { SubMyClass objSubClass=new SubMyClass() ; objSubClass.General(); } } //抽象类MyAbs abstract class MyAbs { public abstract void AbMethod(); //AbMethod抽象方法 } //派生类MyClass class MyClass : MyAbs { public override void AbMethod() //重写AbMethod抽象方法 { Console.WriteLine ("在MyClass中实现抽象方法"); } } //派生自MyClass的子类 class SubMyClass : MyClass { public void General() { //未实现AbMethod抽象方法 Console.WriteLine("在SubMyClass中未实现抽象方法"); } } }
★抽象方法和虚方法有什么区别?
抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
重写的子类虚函数就是被覆盖了。
★抽象方法有哪些特性?
抽象方法是隐式的虚方法。
只允许在抽象类中使用抽象方法声明。
因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号({})。
★什么是sealed修饰符?
sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。
在类声明中使用 sealed 修饰符可防止继承此类。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication27 { class MainClass { static void Main(string[] args) { SealedClass sc = new SealedClass(); sc.x = 110; sc.y = 150; Console.WriteLine("x={0},y={1}", sc.x, sc.y); } } sealed class SealedClass { public int x; public int y; } }
加上下面这句话时就会出错:
class myclass : SealedClass { }
相关文章推荐
- 连接池--sp_reset_connection
- 如何把一个软件系统搞成saas
- 主线程
- ActivityNotFoundException
- javaSE-面向对象-静态代码块
- Struts2 url中包含感叹号实现动态方法调用
- 计算机操作系统(二)之进程管理
- 枚举的各种形式的使用例子
- JAVA array,map 转 json 字符串
- Android的sample程序在哪里
- Unable to resolve target 'android-15'解决方法
- zoj 3204 Connect them kruskal
- 软件工程(学科)简介
- ActivityNotFoundException
- 毅
- real210移植记录-支持eMMC,增加菜单操作
- 一整套偏方,亲们有对应症状可略为参考
- office2007word文档设置多级目录
- 独立思考者的思考模型----智商160以上的人都应该学会的
- UML用例图