修罗场第二天:C#之面向对象基础(下)

------------接(上)http://www.cnblogs.com/HoloSherry/p/7100795.html

  抽象类

    抽象类也可以实现多态,使用关键字abstract。那么什么时候用抽象类呢?

         当父类的方法不知道怎样去实现的时候,此时可以将父类写成抽象类,将方法写成抽象方法。

以下是抽象类的特点:

抽象成员必须标记为abstract,而且不能有方法体;
抽象成员必须在抽象类中;
抽象类中可以有抽象成员,也可以有非抽象成员,非抽象成员可以给子类使用;
抽象类不能被实例化,也就是不能创建对象。
子类继承抽象类后,必须把父类中所有的抽象成员都重写(override)。
抽象成员的访问修饰符默认是public,且不能被更改。
抽象类有构造函数,虽然不能被实例化,但是可以被子类所用。

      如果父类的抽象方法中有参数,那么,继承这个父类的子类在重写父类的方法时也必须传入对应的参数。如果抽象父类的抽象               方法中有返回值,那么子类在重写这个抽象方法时,也必须要传入返回值。

    举例子:   

 1 //动物叫的声音各有不同,这里我们用抽象类来实现
 2 //声明Animal父类,Cat和Dog子类
 3 public abstract class Animal
 4 {
 5     public abstract void Bark();
 6 }
 7 public class Dog:Animal
 8 {
 9     public override void Bark()
10     {
11         Console.WriteLine("狗汪汪叫");
12     }
13 }
14 public class Cat:Animal
15 {
16     public override void Bark()
17     {
18         Console.WriteLine("猫喵喵叫");
19     }
20 }
21 //在主函数中调用一下
22 static void Main(string[] args)
23 {
24     Animal cat=new Cat();
25     cat.Bark();
26     Console.ReadKey();
27 }
28 //最后结果:控制台中输出 猫喵喵叫

  接下来是实现多态的第三种方法:利用接口。

   接口的出现是为了解决一个类继承多个类的情况,继承的多个类实际上就是接口。

   接口有以下特点:

   接口是一种规范,一种能力,接口的功能单一,一个类继承了一个接口,就必须实现这个接口中的所有成员,不能被实例化。

   接口不能继承一个类,但是可以继承接口,接口中不能有字段和构造函数。

举例子:

  

时间: 2024-10-05 14:53:42

修罗场第二天:C#之面向对象基础(下)的相关文章

面向对象基础之抽象类与接口 下

在上篇博文中我们一起了解了抽象类,那么什么是接口呢?下面给大家简单介绍一下: 所谓接口,就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合.一旦类实现了接口,类就可以支持接口所指定的所有属性和成员.声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式,因此接口不能实例化,不能有构造方法和字段,不能有修饰符,如public等.在实现接口的类中必须实现接口中的所有方法和属性. 一个接口可以支持多个接口,多个类也可以支持相同的接口.需要注意的是,接口用interface关

《Java从小白到大牛》之第10章 面向对象基础(下)

<Java从小白到大牛>纸质版已经上架了!!! 封装性与访问控制 Java面向对象的封装性是通过对成员变量和方法进行访问控制实现的,访问控制分为4个等级:私有.默认.保护和公有,具体规则如表10-1所示. 表 101 Java类成员的访问控制 可否直接访问控制等级 同一个类 同一个包 不同包的子类 不同包非子类 私有 Yes 默认 Yes Yes 保护 Yes Yes Yes 公有 Yes Yes Yes Yes 下面详细解释一下这4种访问级别. 私有级别 {#-0} 私有级别的关键字是pri

第二十五节:Java语言基础-面向对象基础

面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基于面向过程的.以前是主要以面向过程为思想,现在是将功能装进对象中,如果要用到功能时,就调用该对象即可. 面向对象是入门思想的进步,适用于人类的思考,将复杂的东西进行了简单化,将我们程序员从执行者变化成指挥者.由以前面向功能(面向过程)转变为面向对象(封装的功能). **** 面向对象设计思想 设计思

java的第二个实验——JAVA面向对象程序设计

java的第二个实验——JAVA面向对象程序设计 北京电子科技学院 实     验    报     告 课程:Java程序设计 班级:1352 姓名:林涵锦 学号:20135213 成绩:        指导教师:娄嘉鹏  实验日期:2015.4.14 实验密级: 预习程度:  实验时间:19:30~21:50 仪器组次:13 必修/选修:选修 实验序号:2 实验名称:JAVA面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态

MYSQL、PHP基础、面向对象基础简单复习总结

一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序  2.MySql数据库的数据类型简单介绍常用的几种 整形:int 小数:float.double.decimal 字符串:varchar.char(他俩的区别是创建的长度与具体长度的问题) bool类型:bit 日期时间:datetime 3.创建表及约束 创建表语句: create table InFo( Pwd varchar(50), Name varchar(50), Nation va

[WuDe]C#程序设计教程 - 第2章 C#面向对象基础

第2章 C#面向对象基础 2.1 类 类是一种数据类型,而对象是具有这种类型的变量 [类的修饰符] class 类名 [:基类名] { //类的成员 }[;] 访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中"封装"的目的;控制对外访问权限 在类这个级别,不写访问修饰符默认为internal,类只有两个访问修饰符,public 和internal (暂时这样理解),在类里面,方法外定义变量或方法前不加访问修饰符,默认为private Public公共类:不受限制对该类

Python20期课堂总结-20180113day6-常用模块与面向对象基础

第1章 常用模块 1.1 random模块 1.1.1 random模块介绍 import random ####取随机数模块 print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之间的整数 print(random.randrange(1,3)) #[1,3) 大于等于1且小于3之间的整数 print(random.choice([1,'23',[4,5]

Python之路【第二篇】:Python基础(一)

Python之路[第二篇]:Python基础(一) 入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 1 2 3 if 1==1:     name = 'wupeiqi' print  name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result = 值2 三.进制 二进制,01 八进

附录A培训实习生-面向对象基础(2):构造方法和带参数的构造方法

构造方法,又叫构造函数,其实就是对类进行实例化.构造方法与类同名,无返回值,也不需要void,在new时候调用.也就是说,就是调用构造方法的时候. 所有类都有构造方法,如果你不编码则系统默认生成空的的构造方法,如你有定义构造方法,那么默认的构造方法就会失效. 有参数的构造方法:比如我们希望每个小猫一诞生都有姓名,那么就应该写一个有参数的构造方法. 这是一个有参数的构造方法,可以看下: 1 using System; 2 using System.Collections.Generic; 3 us

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气