博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象——(7)抽象类
阅读量:5292 次
发布时间:2019-06-14

本文共 1900 字,大约阅读时间需要 6 分钟。

       抽象类通常代表一个抽象概念,它提供了一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。

注意:

1、抽象类不能实例化

2、抽象方法必须被子类重写的方法,不重写的话,它就没有存在的意义了。

3、如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法。

4、不能用修饰符修改抽象类,这意味着抽象类不能被继承。

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    {             }

转载于:https://www.cnblogs.com/saixing/p/6730357.html

你可能感兴趣的文章
【动态规划DP】传娃娃-C++
查看>>
LOJ.121.[离线可过]动态图连通性(线段树分治 按秩合并)
查看>>
201521123072 结对编程
查看>>
最长上升子序列
查看>>
maven 依赖、聚合和继承 (转)
查看>>
selinux介绍/状态查看/开启/关闭
查看>>
DockerAPI版本不匹配的问题
查看>>
Leetcode: Ugly Number II
查看>>
项目立项管理
查看>>
(没时间维护,已下架)博客园第三方客户端-i博客园正式发布App Store
查看>>
map使用实例
查看>>
关于ShapeDrawable应用的一些介绍(上)
查看>>
洛谷 P3984 高兴的津津
查看>>
洛谷 P1308 统计单词数
查看>>
使用GitHub
查看>>
1.25回溯 n皇后问题,素数环,困难的串
查看>>
大量界面刷新时手动Dispose也是有必要的
查看>>
机电传动控制第三周学习笔记
查看>>
删除.gitignore中的在version control中的文件
查看>>
java精确计算、精确计算工具类
查看>>