抽象类,抽象方法
来源:互联网 发布:用友软件招聘信息 编辑:程序博客网 时间:2024/03/29 02:38
<1>
抽象类中可以有实现的方法。抽象方法必须在抽象类中。
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ //抽象类不能是密封的或静态的。 抽象类的成员只能被子类的对象来调用。注:抽象成员需要子类override重写后使用。非抽象成员由子类直接调用 //不能初始化的类被叫做抽象类。抽象类只能被继承。不能被实例化。抽象类中可以包含非抽象方法,属性,字段等成员。 abstract class A //A是一个抽象类 { public abstract string Name { get; set; } //抽象类可以包含抽象属性 public int Age { get; set; } //抽象类可以包含非抽象的属性 public abstract void Method(); //抽象类可以包含抽象方法。抽象方法只需声明,无需实现。 public void Sum(int a, int b) //抽象类可以包含非抽象的方法。 { Console.WriteLine(a + b); Console.WriteLine("我的名字叫{0},今年{1}岁", Name, Age); } public A() //抽象类还可以有构造函数。因为抽象类不能实例化,所以它就无法调用这个构造函数。这个构造函数只有在它所在的类的“派生类初始化”的时候才能够被执行到。 { this.Age = 5; this.Name = "张三"; } } class B : A { public override void Method() //重写“抽象父类”的抽象方法。注意:实现的时候需要加override关键字 { Console.WriteLine("实现父类的抽象方法"); } public override string Name //重写“抽象父类”的抽象属性 { get; set; } public B() { } } class C : B { } /* class C { //含有抽象方法的类一定是抽象类,而这里的C类并不是抽象类。所以下面定义的抽象方法报错 public abstract string Myabstarct(); //错误 “Test.C.Myabstarct()”是抽象的,但它包含在非抽象类“Test.C”中 } */ class InheritanceTest1 { static void Main(string[] args) { //A a = new A(); //错误 ,抽象类不能被实例化。 A a = new B(); //正确,实例化一个B类型的对象赋值给父类A的一个变量a a.Method(); //输出“实现父类的抽象方法”即:这里调用是子类的Method方法。 B b = new B(); b.Name = "燕子李三"; b.Sum(5, 6); //抽象类的非抽象方法只能被子类的对象来调用。因为B类重写了A类的抽象Name属性,所以这里输出 “11 我的名字燕子李三,今年5岁” C c = new C(); //因为C类继承B类,而B类又继承A类,所以C类的对象可以调用A类的公有成员 c.Sum(10, 6); // 调用父类的父类的Sum方法。所以这里输出“16 我的名字张三,今年5岁,” Console.ReadKey(); } }}
狮子、猴子和鸽子都是一种动物,因此,可以建立一个Animal 抽象基类,让狮子、猴子和鸽子从其派生出来
abstract class Animal //抽象的动物类 { public abstract void eat(); } class Lion : Animal //狮子 { public override void eat() { Console.WriteLine("我吃肉"); } } class Monkey : Animal //猴子 { public override void eat() { Console.WriteLine("我吃香蕉"); } } class Pigeon : Animal //鸽子 { public override void eat() { Console.WriteLine("我吃大米"); } }
0 0
- 抽象类、抽象方法
- 抽象类抽象方法
- 抽象类,抽象方法
- 抽象类,抽象方法
- 抽象方法,抽象类
- 抽象类、抽象方法
- 抽象类、抽象字段、抽象方法
- 抽象类、抽象方法、抽象属性
- 13.抽象类、抽象字段、抽象方法
- 抽象类与抽象方法
- 抽象类和抽象方法
- 抽象类和抽象方法
- 抽象方法和抽象类
- 抽象方法和抽象类
- java 抽象类,抽象方法
- 抽象类和抽象方法
- C#抽象类、抽象方法
- 抽象类和抽象方法
- 双电源之间切换最简单实用
- 细谈Lucene(二):Lucene的搜索组件 详解
- OpenGL如何利用glDrawPixels来读取glreadPixels保存的文件
- pthread_cond_init,pthread_cond_wait
- zoj 2711 - Regular Words
- 抽象类,抽象方法
- Unity3D - AssetBundle 在Android机子上进行读取
- Lua中table求长度的集中方法
- 生活管家app 055555
- 让程序使用自带的字体文件
- LESSON: Why Eclipse doesn't show SVN updates information with Subversive Plugin
- 细谈Lucene(三):Lucene的 核心API 简介
- libcurl教程
- Android开发之旅一重启app程序