博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象 【抽象类】【接口】【构造函数】【静态】
阅读量:4482 次
发布时间:2019-06-08

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

一、抽象类

abstract     抽象

override    重写

父集:  abstract 抽象类,抽象方法

子集: override 改写

它就是出来当亲爹的,只为继承而出现,不能被实例化成对象

一般抽象类中只放置抽象方法,只规定了返回类型和参数,不定义具体的内容

抽象类可以包含抽象方法普通方法,抽象方法一定在抽象类中,抽象类中不一定只有抽象方法                                                      

如果要调用抽象类中的普通方法,那么需要子类继承之后实例化再调用

当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。

sealedabstract 关键字不能同时出现

 案例

namespace ConsoleApplication1{    public abstract class Ren    {        public abstract string ChiFan();          }}——————————————————namespace ConsoleApplication1{     public  class Woman : Ren    {        public override string ChiFan()        {            return "细嚼慢咽";        ——子类,父类 方法名称要一样        }    }}———————————————————namespace ConsoleApplication1{    public class Man : Ren    {        public override string ChiFan()        {            return "大口吃饭";        }         }}
View Code

 —— 子类、父类 方法名一致

 —— 父类中的抽象方法子类中必须要重写

 

 

二、接口

interface 

可以将程序拆分成多个模块,定义子类必须实现的功能

它就是出来当干爹的,不能被实例化成对象,接口里面不能有实际的方法

类:一定用 public 修饰符, 用 interface 代替类个关键字 class 

方法:不能包含普通方法,不用 public, 直接【 数据类型 函数名 ();  

子类:不需要override关键字,

      :父集中的方法都有重写

 案例

namespace ConsoleApplication1{    public interface YuLe    {        string AiHao();    }}————————————————namespace ConsoleApplication1{    public interface GongZuo    {        string JiNeng();    }}————————————————namespace ConsoleApplication1{    public class Man : Ren, GongZuo, YuLe    {        public override string ChiFan()        {            return "大口吃饭";        }        public string JiNeng()        {            return "敲代码";        }        public string AiHao()        {            return "打游戏";        }    }}
View Code

—— 子类、父类 方法名一致

 —— 父类中的方法子类中都要重写

 

 

构造函数:

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象(为对象成员变量赋初始值),

每一个类都有构造函数

类实例化的过程就是执行构造函数的过程

一个类可以有多个构造函数 ,

构造函数一定不能是静态的

在类被实例化的时候调用的方法 :     new 类名();                        

 

结构:

  public class Test1

 {                              ————
         public Test1()     .                —— 什么都没有的一般默认隐藏

         {                       .                —— 方法名与类名一致。

                                  .                —— text1()  括号中可以有参数

         }                       .                ——  【  public  方法名  】没有数据类型

  }                            ————        

 

text1  t  =  new   text1 ( );          —— new  text1( );  实例化过程                            

 

 

重载overload

构造函数的方法名一样,参数个数不同,或参数类型不同

public  class  text2

{

        public   text2 ( string  a , string  b )

        {

             return   a + b 

        }

 

        public   text2 ( int  a , int  b )

        {

             return   a + b 

         }

}

 

四 静态方法和静态成员 static

   静态方法是属于类的,不属于类下面的对象。

   直接用: 类名 . 静态方法

 

结构

public  class  text3 

{

        public   static   string  haha ( )

         {

                return   "哈哈哈"

         }

}

————————

text3.haha ( );            —— 直接通过类名点出

 

 

非静态方法

         需要实例化对象

 

         成员都是属于对象的

         用对象调用

静态方法 

         不需要实例化对象

         静态成员是属于类的

         用类名调用

     

注: 静态方法里面不能包含普通成员

       普通方法里面可以包含静态成员

用处

      为了简便,连接数据库的时候,造连接对象类,使用静态属性直接返回连接对象。

    两个类之间传递信息

     不允许创建对象的类(对创建对象的个数有限制)

 

转载于:https://www.cnblogs.com/Tanghongchang/p/6718240.html

你可能感兴趣的文章
Python练习-内置函数的应用
查看>>
洛谷P3905 道路重建
查看>>
数据表格 - DataGrid - 行编辑
查看>>
HQL查询语句
查看>>
jsp听课笔记(四)
查看>>
vim
查看>>
数组的键/值操作函数
查看>>
Android单点触控与多点触控切换的问题解决方案
查看>>
JS常用函数与方法
查看>>
十、Shell基础
查看>>
py16 面向对象深入
查看>>
CentOS 7 安装 Gitlab
查看>>
JavaScript-03-常见函数
查看>>
ajax 设置Access-Control-Allow-Origin实现跨域访问
查看>>
去掉ExpandableListView的箭头图标
查看>>
[LeetCode]Binary Tree Level Order Traversal II
查看>>
跨页面传值自动刷新 操作文本与文件夹
查看>>
最完美的毁尸灭迹:皮箱连环弃尸案始末
查看>>
002
查看>>
WCF服务“*”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。...
查看>>