abstract 关键字---抽象类
2014-03-23 10:55
176 查看
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用abstract修饰符以指示某个类只能是其他类的对象,这个基类被称为抽象类。抽象类本身无法产生实例对象,而且抽象类包含了一个以上的抽象方法,这些方法只是提供函数名称,并没有定义如何实现,由继承的派生类同时必须实现所有抽象类的方法,否则其本身将成为另外一个抽象类。当派生类重写抽象类的方法时,要使用override关键字来重写抽象类所定义的方法。抽象类与非抽象类在以下方面是不同。
1.抽象类不能直接实例化,并且对抽象类使用new运算符是编译时错误,虽然一些变量和值在编译时的类型可以是抽象的。但这样的变量必须或者为Null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2.允许(但不要求)抽象类包含抽象成员
3.抽象类不能被密封。
4.抽象类可以包含抽象方法和访问器。
5.一个派生于抽象类的非抽象类必须包含所有的继承抽象方法和访问器的实现。
using System;
namespace CH
{
public abstract class Person
{
private string name;
private int age;
public string Name
{
get{return name;}
set{name=value;}
}
public int Age
{
get{return age;}
set{age=value;}
}
public abstract void ShowInfo(); //抽象方法
}
public class Student:Person
{
public override void ShowInfo() //重写抽象类中的抽象方法
{
Console.Writeline("name:{0}\t age:{1}",Name,Age);
}
}
class Programe
{
static void Main(string[] args)
{
Student student=new Student(); //实例化抽象类
Person person=student; //使用派生类对象实例化抽象类
person.Name="jack"; //使用抽象类对象访问抽象类中的name属性
person.Age=20;
person.ShowInfo();
}
}
}
抽象方法主要有以下特征:
一个抽象方法可以看作是一个虚函数。
抽象方法的声明只能在抽象类中。
抽象方法声明只提供一个实现的方式,没有方法体。
方法体的实现被重写方法提供,重写方法是一个非抽象类的成员。
抽象属性的行为和抽象方法相似,除了不同的声明形式。
在一个静态属性中使用abstract是错误的。
一个抽象属性能够通过派生类使用override实现。
1.抽象类不能直接实例化,并且对抽象类使用new运算符是编译时错误,虽然一些变量和值在编译时的类型可以是抽象的。但这样的变量必须或者为Null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2.允许(但不要求)抽象类包含抽象成员
3.抽象类不能被密封。
4.抽象类可以包含抽象方法和访问器。
5.一个派生于抽象类的非抽象类必须包含所有的继承抽象方法和访问器的实现。
using System;
namespace CH
{
public abstract class Person
{
private string name;
private int age;
public string Name
{
get{return name;}
set{name=value;}
}
public int Age
{
get{return age;}
set{age=value;}
}
public abstract void ShowInfo(); //抽象方法
}
public class Student:Person
{
public override void ShowInfo() //重写抽象类中的抽象方法
{
Console.Writeline("name:{0}\t age:{1}",Name,Age);
}
}
class Programe
{
static void Main(string[] args)
{
Student student=new Student(); //实例化抽象类
Person person=student; //使用派生类对象实例化抽象类
person.Name="jack"; //使用抽象类对象访问抽象类中的name属性
person.Age=20;
person.ShowInfo();
}
}
}
抽象方法主要有以下特征:
一个抽象方法可以看作是一个虚函数。
抽象方法的声明只能在抽象类中。
抽象方法声明只提供一个实现的方式,没有方法体。
方法体的实现被重写方法提供,重写方法是一个非抽象类的成员。
抽象属性的行为和抽象方法相似,除了不同的声明形式。
在一个静态属性中使用abstract是错误的。
一个抽象属性能够通过派生类使用override实现。
相关文章推荐
- JAVA基础再回首(七)——final关键字、抽象类abstract、接口interface、权限修饰符、导包
- JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展
- JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展
- Java之抽象类(abstract关键字)
- PHP 抽象方法与抽象类 abstract 关键字
- 为什么要在定义抽象类时使用abstract关键字
- java基础12 抽象类(及关键字:abstract)
- 为什么要在定义抽象类时使用abstract关键字
- 为什么要在定义抽象类时使用abstract关键字
- 为什么要在定义抽象类时使用abstract关键字
- Java学习之面向对象(1.Object类,(1)toString方法,(2)equals方法,2.对象转型(casting),3.动态绑定与多态,4.抽象类(abstract),5.Final关键字)
- java中的抽象类abstract关键字
- 类中的 抽象方法 与抽象类 使用关键字 abstract
- Java重修之路(九)面向对象之final关键字,抽象类(abstract),接口(interface)
- Java 抽象类(abstract关键字)
- 面向对象-简单抽象类 abstract 关键字
- PHP 抽象方法与抽象类abstract关键字介绍及应用
- PHP 抽象方法与抽象类abstract关键字介绍及应用
- C#.NET中的抽象类(关键字abstract)
- Java中 关键字final,抽象类abstract, 接口interface ,多态