抽象和接口

继承:
访问修饰符  class  类名 :类名

一个类只能有一个父类(亲爹)

父类  某个类继承自某个类
子类  派生类   超类

多态:
类的多种形态

父类存在虚方法   virtual
子类重写         override

访问修饰符:
public      公共的,只要引用了命名空间就能用
            访问级别最高
private     私有的,只能在类的内部进行访问
            访问级别最低

internal    默认的,同一个命名空间下可以访问
            访问级别次最高

protected    被保护的,类的内部及它的子类中才可以访问
            访问级别次最低

-----------------------------------------------------------
抽象类:abstract
就是用来当亲爹的,不能被实例化对象

抽象方法只能存在于抽象类中
抽象类中不一定只有抽象方法,还可以有普通方法(普通方法可以虚写)

1.创建HuoZhe类
namespace 抽象类和接口
{
    public abstract class HuoZhe     // 写上;public abstract , abstract:摘要
    {
        写一个string类型的方法,吃饭方法
        public string ChiFan() {    //return "大口吃饭";    //  返回的内容   }

        将其修改为抽象方法:abstract
        public abstract string ChiFan();   // 相当于已经声明完了

        抽象类里不仅有抽象方法,还有普通方法
        public virtual string HuXi() {
            return "鼻子和嘴呼吸";
        }

    }
}
2.创建Ren类
namespace 抽象类和接口
{
    class Ren:HuoZhe,GongZuo,YuLe   要想活着,需要继承活着的方法,吃饭方法,冒号是抽象类,逗号是接口
    {
        抽象方法,必须要把继承的方法在这写出来,否则报错
        然后对这个抽象方法ChiFan进行重写
        public override string ChiFan()
        {
            throw new NotImplementedException();  抛出一个新的异常,如果不改,一调这个方法,会抛出一个新的异常
            return "用嘴吃饭";   要的是返回一个string类型,在做HuoZhe
        }

        生成解决方案不成功
        Ren不实现GongZuo里的GongZuo1()方法是有错的
        所以在这需要把它实现出来
        接口里public 不用写override,直接写string类型的GongZuo1
        public string GongZuo1() {
            return "";
        }

        生成解决方案不成功
        Ren不实现YuLe里的YuLe()方法也是有错的
        所以在这需要把它实现出来
        接口里public 不用写override,直接写string类型的YuLe1
        public string YuLe1() {
            return "听音乐";
        }

        生成成功
    }
}
3.创建男人类
namespace 抽象类和接口
{
    class NanRen : Ren      //继承人这个类
    {
        public override string ChiFan()
        {
            //return base.ChiFan();返回父级的ChiFan方法
            return "大口吃饭";
        }
    }
}
4.创建女人类
namespace 抽象类和接口
{
    class NvRen:Ren    //继承人这个类
    {

        public override string HuXi()
        {
            return "就爱用鼻子呼吸";
        }

    }
}

-------------------------------------------------------------

接口:interface   干爹
不能被实例化对象 

接口中只能存在很抽象的方法
string 方法名();

接口中所有的内容都一定是public

5.创建工作类
namespace 抽象类和接口
{
    interface GongZuo
    {
        //可以添加类的时候把class 改为 interface,也可以直接点击添加类,然后改成接口,也是.cs后缀
        //接口是很抽象的,抽象到不允许有私有的,都是公开的
        //连访问修饰符都不用写
        //直接写方法和返回类型
        string GongZuo1();   //这样就声明了方法
    }
}
6.创建娱乐类
namespace 抽象类和接口
{
    interface YuLe
    {
        string YuLe1();
    }
}

还有创建的Ren 类里的内容:

生成解决方案不成功
        Ren不实现GongZuo里的GongZuo1()方法是有错的
        所以在这需要把它实现出来
        接口里public 不用写override,直接写string类型的GongZuo1
        public string GongZuo1() {
            return "";
        }

        生成解决方案不成功
        Ren不实现YuLe里的YuLe()方法也是有错的
        所以在这需要把它实现出来
        接口里public 不用写override,直接写string类型的YuLe1
        public string YuLe1() {
            return "听音乐";
        }

        生成成功
时间: 2024-12-16 16:55:27

抽象和接口的相关文章

php抽象与接口的区别[转载]

来自:http://www.cnblogs.com/k5054/archive/2012/12/26/2834205.html 对于面向对象开发,抽象类与接口这两个东西是比较难理解的! 今天看了一整天!自己总结一下吧! 抽象类:是基于类来说,其本身就是类,只是一种特殊的类,不能直接实例,可以在类里定义方法,属性!类似于模版,规范后让子类实现详细功能! 接口:主要基于方法的规范,有点像抽象类里的抽象方法,只是其相对于抽象方法来说,更加独立!可让某个类通过组合多个方法来形成新的类! 抽象类与接口的相

抽象及接口

1.抽象类的几个特点: 1.不能被实例化,只能被继承     2.继承的派生类当中要把所有抽象方法重载才能实例化 2.什么是接口? 接口interface 是一个规定,给人继承用的东西,有点像抽象类 接口类似于抽象类,但是它比抽象类更抽象,接口是变向的实现了多继承,一个类可以实现无数个接口. 3.接口的关键字以及用法 在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法. 4.访问控制(可见性) 对属性或方法的访问控制,是通过在前面添加关键字

浅谈C# 多态的魅力(虚方法,抽象,接口实现)

浅谈C# 多态的魅力(虚方法,抽象,接口实现) 分类:             asp.net             C#              2014-02-08 11:29     786人阅读     评论(0)     收藏     举报 浅谈C# 多态的魅力(虚方法,抽象,接口实现) 前言:我们都知道面向对象的三大特性:封装,继承,多态.封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向

黑马程序员--java基础------继承,抽象,接口

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------  继承 一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单独的这个类称为父类或者超类. 这样类与类之间就存在了继承的关系.子类可以直接访问父类中的非私有的属性和行为.在代码中通过extends关键字表示继承关系.例: class

C# 多态(虚方法,抽象,接口实现)

浅谈C# 多态的魅力(虚方法,抽象,接口实现) 前言:我们都知道面向对象的三大特性:封装,继承,多态.封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象的魅力体现了出来,那就是多态,多态用的好,可以提高程序的扩展性.常用的设计模式,比如简单工厂设计模式,核心就是多态. 其实多态就是:允许将子类类型的指针赋值给父类类型的指针.也就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时

Java基础---继承、抽象、接口

一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单独的这个类称为父类或者超类.例如:猫和豹子都是猫科动物,那么就可以说描述猫这个对象创建的类,是子类:而描述猫科动物这个对象创建的类,就是父类. 这样类与类之间就存在了继承的关系.子类可以直接访问父类中的非私有的属性和行为.在代码中通过extends关键字表示继承关系.例: class Sonexte

ym——抽象与接口包含(工厂+适配器+代理)模式讲解

抽象类和接口抽象类 abstract class A{      // 是定义了一个抽象类 publicstatic final String FLAG = "CHINA" ;  //全局常量 privateString name = "Cym" ;    // 定义一个普通的属性 publicvoid setName(String name){ this.name = name ; } publicString getName(){ return this.nam

类、多态、抽象、接口小结

什么是类 类是具有相同的属性和方法的一堆对象的集合. 什么是对象 万物皆对象,日常生活中能看到和摸到的东西都是对象. 对象由属性和行为组成 属性是对象所具有的特征,行为是对象可以做的动作 类和对象的关系 类是对象的描述,对象是类的实例 对象的每个属性被表示为类中的一个成员变量 对象的每个行为成为类中的一个方法 什么是构造函数 构造函数是类中的一个特殊方法,该方法在对象实例化时被调用.构造函数的用途是当对象实例化时,初始化对象中的成员变量. final关键字 1.final 可修饰变量(创建符号常

多态与抽象以及接口

继承.封装.多态.抽象是面向对象编程的四大基本特征.封装隐藏了类的内部实现机制,在不影响用户使用的前提下,改变类的内部结构,从而保护了数据.继承则是通过重写父类代码,既可以多态,也可以让代码的复用性大大提高.所谓多态,就是同一种行为,不同的对象不同的体现,java的多态弥补了其自身单一继承的缺陷. 多态又分为,静态多态和动态多态. 静态多态是指程序在编译时就能决定其调用的方法,也称编译时多态,说的更直接静态多态实现方式就是方法的重载. 多态多态是指程序在运行中系统多态确定方法所指的对象,也称为运

java抽象、接口 和final

抽象 一.抽象类:不知道是具体什么东西的类. abstract class 类名 1.抽象类不能直接new出来. 2.抽象类可以没有抽象方法. 3.抽象类中,可以有抽象方法,也可以有非抽象方法.抽象类中还可以有成员变量. 4.派生类中,可以不实现某些抽象方法,但派生类必须要声明为抽象类. 二.抽象方法:不知道具体是干什么事情的方法.abstract 返回类型 函数名(形参); 1.抽象方法没有函数体. 2.有抽象方法的类必须是抽象类. 遇到抽象类,两种用法: 1.找找有没有它的派生类,用它的派生