20141014C#面向对象抽象方法,抽象类,接口

里氏代换原则。可以用子类的对象替代父类的对象。

抽象依赖原则。依赖——形参,关联

一、抽象方法:

在一些父类中,某些行为不是非常明确,因此无法用代码来具体实现,但是类必须具备此方法,因此把这样的方法定义为抽象方法。abstract

特点:1.只声明,不实现。2.加abstract关键字。

eg:

 1 public abstract class Ren //类中含有抽象方法,此类也必须是抽象类。
 2 {
 3   public abstract void Eat(); //以分号结束,没有花括号
 4 }
 5 class Chinese:Ren
 6 {
 7   public override void Eat()
 8   {
 9     Console.WriteLine("用筷子吃饭。");
10   }
11 }

二、抽象类:

无法被实例化的类。关键词是abstract 。凡是带有abstract关键词的类,都无法new 出来。

凡是带有抽象方法的类,肯定是抽象类;抽象类却不一定包含抽象方法。

构造方法、静态成员方法不能被声明为抽象方法。

一个非抽象类必须实现从父类继承来的所有抽象方法。

不能创建抽象类的实例。

三、接口 interface: 极度抽象的类。无成员变量,无实例方法,无实例属性,只有抽象方法或抽象属性。接口就是一个规则。

接口用interface关键词来定义。

接口中的方法都是抽象的,因此无需加abstract。

接口中的方法都是公有的,无需加访问修饰符。

生活中的例子:标准,协议

接口可以继承父接口

一个类可以实现(继承)多个接口

eg:

 1    public interface IUSB
 2     {
 3         void Start();
 4         void Stop();
 5     }
 6     public class Camera : IUSB
 7     {
 8         public void Start()
 9         {
10             Console.WriteLine("打开摄像头了");
11         }
12
13         public void Stop()
14         {
15             Console.WriteLine("摄像头关闭了");
16         }
17     }
18
19     public class UDisk : IUSB
20     {
21         public void Start()
22         {
23             Console.WriteLine("U盘启动了");
24         }
25
26         public void Stop()
27         {
28             Console.WriteLine("U盘退出了");
29         }
30     }
31
32     public class Computer
33     {
34         public void CheckUSB(IUSB usb)
35         {
36             usb.Start();
37         }
38         public void CloseUSB(IUSB usb)
39         {
40             usb.Stop();
41         }
42     }

命名空间:相当于一个包。对类进行分类管理的工具。

一般的命名规则:公司名.项目名.模块名

项目名:用给人类,标识出这个项目是做什么的

程序集:程序编译出来的.exe或.dll文件。程序集的名字就是编译出来的EXE或dll的名字。

时间: 2024-11-08 22:09:44

20141014C#面向对象抽象方法,抽象类,接口的相关文章

06 面向对象:多态&抽象类&接口&权限修饰符&内部类

多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父类),运行看左边(父类). * 成员方法 * 编译看左边(父类),运行看右边(子类).动态绑定 * 静态方法 * 编译看左边(父类),运行看左边(父类). * (静态和类相关,算不上重写,所以,访问还是左边的) * 只有非静态的成员方法,编译看左边,运行看右边 */ class Demo_Polym

12-14java面向对象之抽象类&接口

抽象类 1.抽象类概念 抽象类:包含抽象方法的类,相比于普通类,他多了一个抽象方法. 抽象方法:只声明但是没有实现的方法,用abstract关键字来定义. 未实现的举例: class A { private String name ; public void print() } 在类中声明的方法,有{}则说明有方法体,则实现:没有{},则未实现. 2.使用规则 包含一个抽象方法的类必须是抽象类 抽象类和抽象方法都使用abstract关键字声明 抽象方法只需要声明不需要实现 抽象类必须被子类继承,

8 面向对象之抽象类+接口+内部类

1 final关键字 用法:  1)使用final修饰变量,该变量就变成常量,在运行的过程中无法重新赋值. 2)使用final修饰方法,该方法无法在子类中重写 3)使用final修饰的类,不能被继承(派生其他子类) JDK中常见的final修饰的类: java.lang.Math   java.lang.String 2 抽象类和抽象方法 抽象方法:使用abstract修饰的方法.特征: 没有方法体. 抽象类:使用abstract修饰的类. 特点: 1)抽象类中可以包含抽象方法.包含抽象方法的类

面向对象的理解 抽象类&接口

一.关于面向对象 1.什么是面向对象 在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu,显卡,主板,电源,风扇,把这些都通过主板链接到一起.我需要清楚的知道主机组装的每一个步骤. 介绍了面向过程,再说会正题,什么是面向对象?对于上面的装主机过程面向对象会把主机先抽象成一个机箱,机箱里有cpu,显卡,主板,电源.用主机的人,不关心里面是怎么工作的,也不需要知道内部逻辑,只知道插上电源就能用.面

抽象类-接口--抽象方法几点解释

//abstract class和interface有什么区别?含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的.abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,(抽象类中的普通方法,可以不必实现.)所以,不能有抽象构造方法或抽象静态方法.如果子类没有实现抽象父类中的所有抽 象方法,那么子类也必须定义

黑马程序员_面向对象之抽象类与接口

抽象类(abstract)???? 当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的放过,但是无法精确的知道这些子类是如何实现这些方法,例如定义一个GetTime类,该类提供了一个计算某一段程序运行时间的gettime方法,但是无法知道具体运行什么方法体,这时就需要使用抽象方法来实现了. 抽象类概念 当多个类中出现相同功能,但是功能主体不同,这时候可以进行向上抽取,只抽取功能定义,而

013_面向对象_抽象类和接口

1.抽象类(abstract) (1)特点 ①方法只有声明没有实现时,该方法就是抽象方法,抽象方法必须定义到抽象类中,该类也必须被abstract修饰 ②抽象类不可以被实例化,因为调用抽象方法没有意义. ③抽象类必须有子类覆盖所有的抽象方法,该子类才可以实例化,否则,这个子类还是抽象类 (2)常见问题 ①抽象类中有构造函数吗? 有,用来给子类对象初始化 ②抽象类可以不定义抽象方法吗? 可以.目的是不让该类创建对象,通常这个类中的方法有方法体,却没有内容 ③抽象关键字不可以和哪些关键字共存? pr

抽象方法和抽象类 & 接口

抽象方法 使用abstract修饰的方法,没有方法体,只有声明.定义的是一种"规范",就是告诉子类必须要给抽象方法提供具体的实现. 抽象类 包含抽象方法的类就是抽象类.通过abstract方法定义规范,然后要求子类必须定义具体实现.通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用. 抽象类的使用要点 有抽象方法的类只能定义成抽象类 抽象类不能实例化,即不能用new来实例化抽象类. 抽象类可以包含属性.方法.构造方法.但是构造方法不能用来new实例,只能用来被子类调用.

2019-05-17 Java学习日记之面向对象_多态&抽象类&接口

多态 多态的概述: A:多态(polymorphic) 事物存在的多种形态 B:多态前提 a:要有继承关系 b:要有方法重写c:要有父类引用指向子类对象 多态中的成员访问特点之成员变量: 成员变量:编译看左边(父类),运行看左边(父类)多态中的成员访问特点之成员方法:成员方法:编译看左边(父类),运行看右边(子类)多态中的成员访问特点之静态成员方法:静态方法:编译看左边(父类),运行看左边(父类)(静态和类相关,算不上重写,所以访问还是左边的)只有非静态的成员方法,编译看左边,运行看右边 多态的