zoukankan      html  css  js  c++  java
  • 抽象类

    抽象类:abstract
    就是用来被继承的,不能实例化对象,因为没有构造函数;
    抽象方法,不能有方法的主体,只能定义方法的结构;

    抽象类可以被子类继承,在子类中需要把方法主体写清楚,调用时直接实例化一下子类,直接调用子类中写的方法

    抽象类虽然不能实例化,但可以实例化等于子类,如:抽象类名  a=new 子类名,这样就可以直接调用子类中的方法

    抽象类中也可以写普通方法和虚方法,普通方法不可以在子类中重写,只能被继承,而虚方法可以在子类中被重写

    抽象方法或抽象属性,只能存在于抽象类中;
    抽象类中不一定只有抽象方法和抽象属性;

    例:

    创建一个项目,添加一个抽象类,再添加一个子类:

    抽象类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 抽象类
    {
        abstract class sport //创建一个项目,添加一个父类,class前面添加关键词abstract,就是一个抽象类
        {
            public abstract void sp();//添加使用方法时在访问修饰符的后面也加上abstract,不能有函数体
    
            public abstract void rt();//抽象类可以做为父类被继承,但因为抽象类中没有方法主体,
                                      //需要在子类中写清楚
    
            //在抽象类中也可以添加普通的使用放法
            public void paobu() 
            {
                Console.WriteLine("用腿跑步");//这样的方法就<不可以>在子类中被重写
            }
    
            //抽象类中也可以由虚方法,虚方法关键词virtual
            public virtual void chifan()
            {
                Console.WriteLine("用嘴吃饭");//虚方法可以在子类中进行重写
            }
        }
    }

    子类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 抽象类
    {
        class swim:sport  //添加一个子类继承这个抽象类,因为抽象类中没有方法主体,需要在子类中写清楚
        {
            public override void sp() //添加时同样用重写关键词override;
            {
                Console.WriteLine("我喜欢运动");
            }
            public override void rt()
            {
                Console.WriteLine("我喜欢游泳");
            }
    
           
            public override void chifan()//在父类中这是一个虚方法,可以重写
            {
                Console.WriteLine("大口吃饭");
            }
        }
    }

    Program:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 抽象类
    {
        class Program
        {
            static void Main(string[] args)
            {
                sport cs = new sport(); //出现报错,抽象类,就是用来被继承的,不能实例化对象,因为没有构造函数;
                sport cs = new swim();//抽象类不能实例化对象,但是他可以new 他的子类swim
                cs.chifan();  // 这样调用的是它子类里面的方法
                cs.paobu();
                cs.rt();
                cs.sp();
                Console.WriteLine("=======================================");
    
                swim sw = new swim();//子类swim继承了sport这个抽象类,并且写了方法主体,就可以实例化使用
                sw.rt();//现在可以直接点出抽象类被继承后,在子类中写完主体的使用方法
                sw.sp();
    
                sw.paobu();//这是在抽象类中写的一个普通方法,不可以在子类中重写,直接被子类继承,可以直接点出使用
                sw.chifan();//这是在抽象类中写的一个虚方法,可以在子类中重写
                Console.ReadLine();
            }
        }
    }

  • 相关阅读:
    用Oracle实现ASH的数据透视图
    Oracle AWR 之 通过dbms_workload_repository.awr_report_text(html)函数在客户端生成AWR报告
    (转)CentOS 7 安装 Python3、pip3
    (转) Linux 内核运行参数修改——sysctl命令
    (转)oracle linux 7 安装oracle 12c
    (转)Oracle与DB2在数据库高可用技术上的相同与差异探讨
    (转)OpenStack —— 原理架构介绍(一、二)
    (转)ELK原理与介绍
    (转)Db2 备份恢复性能问题诊断与调优
    (转)IBM AIX系统安装
  • 原文地址:https://www.cnblogs.com/zyg316/p/5598835.html
Copyright © 2011-2022 走看看