public abstract class oneClass
{
public int i;
public void denylau()
{
}
}
2.抽象方法概述及声明
声明抽象方法时需注意:·抽象方法必须声明在抽象类中 ·声明抽象方法时,不能使用virtual、static、private修饰符。
在抽象类中抽象方法不提供实现。
如:
public abstract class myTestClass()
{
public abstract void method();
}
3.抽象类与抽象方法的使用
例子:
using System;
using System.Collections.Generic;
using System.Text;
namespace _
{
public abstract class myClass
{
private string id = "";
private string name = "";
/// <summary>
/// 编号属性及实现
/// </summary>
public string ID
{
get
{
return id;
}
set
{
id = value;
}
}
/// <summary>
/// 姓名属性及实现
/// </summary>
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
/// <summary>
/// 抽象方法,用来输出信息
/// </summary>
public abstract void ShowInfo();
}
public class DriveClass:myClass //继承抽象类
{
/// <summary>
/// 重写抽象类中输出信息的方法
/// </summary>
public override void ShowInfo()
{
Console.WriteLine(ID + " " + Name);
}
}
class Program
{
static void Main(string[] args)
{
DriveClass driveclass = new DriveClass(); //实例化派生类
myClass myclass = driveclass; //使用派生类对象实例化抽象类
myclass.ID = "BH0001"; //使用抽象类对象访问抽象类中的编号属性
myclass.Name = "TM"; //使用抽象类对象访问抽象类中的姓名属性
myclass.ShowInfo(); //使用抽象类对象调用抽象类中的的抽象方法
}
}
} 作者: 韩俊 时间: 2012-12-1 15:09
抽象类,即在类声明前面加上abstract限定符。由于抽象类没有定义完整的实现,所以抽象类不创建任何对象。
抽象方法:使用abstract限定符能够创建抽象方法,抽象方法不包含方法体,在基类中它不实现任何操作。
例子:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
abstract class Animal //抽象类
{
public abstract void Shout(); //声明一个抽象方法
}
}
class Dog:Animal //继承基类
{
public override void Shout() //重写方法
{
Console.WriteLine("这是狗的叫法:汪汪");
}
}
class Program
{
static void Main(string[]args)
{
Dog dog=new Dog() //实例化派生类
abstract class A
{
public abstract void F();
}
abstract class B : A
{
public void G() { }
}
class C : B
{
public override void F ()
{
// F的具体实现代码
}
}
抽象类 A 提供了一个抽象方法 F(), 抽象类 B 从抽象类 A 中继承, 并且又提供了一个实例方法 G(), 因为 B 中并没有包含对 F()方法的实现, 所以 B 也必须是抽象类, 类 C 从类 B 中继承, 类中重载了抽象方法 F() , 并且提供了对 F() 的具体实现, 则类 C 允许是非抽象的.
abstract class Vehicle
{
public int wheels;
public int weight;
public Vehicle(){}
public Vehicle(int wheels,int weight)
{
this.wheels=wheels;
this.weight=weight;
}
public abstract void Speak();
}
class Car : Vehicle
{
public int passengers;
public Car(int wheels,int weight,int passengers):base(wheels,weight)
{
this.wheels=wheels;
this.weight=weight;
this.passengers=passengers;
}
public override void Speak()
{
Console.WriteLine("the car Di-Di");
}
}
class Truck : Vehicle
{
public int load;
public Truck(int wheels,int weight,int load):base(wheels,weight)
{
this.wheels=wheels;
this.weight=weight;
this.load=load;
}
public override void Speak()
{
Console.WriteLine("the truck Ba-Ba");
}
}
class Program
{
static void Main()
{
Car c=new Car(4,3,5);
c.Speak();
Truck t=new Truck(10,5,50);
t.Speak();
}
}
抽象方法在派生类中不能使用 base 关键字来进行访问, 例如,下面的代码在编译时会出错
abstract class A
{
public abstract void F();
}
class B : A
{
public override void F()
{
base.F(); //错误, base.F() 是抽象方法
}
}
还可以利用抽象方法来重载基类的虚方法, 这是基类中虚方法的执行代码就被"拦截"了.
class A
{
public virtual void F()
{
Console.WriteLine("A.F()");
}
}
abstract class B : A
{
public abstract override void F();
}
class C : B
{
public override void F()
{
Console.WriteLine("C.F()");
}
}
类 A 声明了一个虚方法 F(), 派生类 B 使用抽象方法重载了 F(), 这样 B 的派生类 C 就可以重载 F() 并提供自己的实现. 作者: ♂张耕明 时间: 2012-12-2 13:42
抽象类不能实例化,抽象方法不能在抽象类中实现。从字面意思去理解,抽象的就表示不是具体的、模糊的。在实际应用中,当多个类有共同点时,可以通过继承自一个抽象类来实现多态或者减少代码。作者: 快乐之恋 时间: 2012-12-3 12:44
·抽象类不能直接被实例化
·抽象类中可以包含抽象成员,但非抽象类中不可以
·抽象类不能被密封
举个小例子
public abstract class oneClass
{
public int i;
public void denylau()
{
}
}
声明抽象方法时,不能使用virtual、static、private修饰符。
在抽象类中抽象方法不提供实现。
如
public abstract class myTestClass()