zoukankan      html  css  js  c++  java
  • 面向对象——(7)抽象类

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


    注意:

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




  • 相关阅读:
    榫卯游戏介绍
    如果你有一个域名,你也可以免费有一个diy@yourdomain.com的企业邮局
    封装一个axios请求后台的通用方法
    javascript判断两个对象属性以及值是否相等
    遍历出文档内所有元素的tagName
    windows下nginx的安装及使用方法入门
    css样式重置样式
    canvas绘图
    表单脚本
    javascript事件
  • 原文地址:https://www.cnblogs.com/saixing/p/6730357.html
Copyright © 2011-2022 走看看