C# 抽象类(abstract)

抽象类:
a.定义:
·类是一个具有相同特征和行为的抽象,而抽象类(class 前加上 abstract)没有指出行为的具体细节,而由他的子类去实现相应的行为。
·把普通类前面加一个abstract关键字就是抽象类。
·包含一个抽象方法的类就称为抽象类。
b.抽象方法:
只声明但未实现的方法称为抽象方法,使用abstract关键字声明。
c.格式:
访问修饰词 abstract 方法返回类型 方法名(参数列表);
例如:public abstract void Fly();
d.特征:
抽象类:
·不能创建一个抽象类的实例。
·抽象类不能被声明为 sealed。(C#提供了一个sealed 修饰符,此修饰符会阻止其他类从该类继承。)
抽象方法:
·抽象方法没有方法体
·抽象方法必须在抽象类里
·抽象方法必须在子类中被实现,除非子类是抽象类
(抽象方法的目的就是被子类重写)
1、设计Bird、Person和Fish类, Bird类实现FlyAble抽象类, Person类实现TalkAble抽象类,Fish类实现SwimAble抽象类,并打印信息。

抽象类

//抽象方法必须要在抽象类当中
//(类中有抽象方法,那必定是抽象类)
abstract class FlyAble
{
    
    
//声明方法(抽象方法)
//抽象方法默认为虚方法,但不能出现virtual
 public abstract void Fly();       
}
abstract class TalkAble
{
    
    
 public abstract void Talk();
}
abstract class SwimAble
{
    
    
 public abstract void Swim();
}

子类

//父类的抽象方法,子类必须都要实现
class Bird : FlyAble
 {
    
    
  public override void Fly()
  {
    
    
   Console.WriteLine("小鸟在飞");
  }
 }
class Person : TalkAble
 {
    
    
  public override void Talk()
  {
    
    
   Console.WriteLine("人在交谈");
  }
 }
 class Fish : SwimAble
 {
    
    
  public override void Swim()
   {
    
    
    Console.WriteLine("小鱼游泳");
   }
 }

测试部分

static void Main(string[] args)
{
    
    
  //抽象类不能被实例化,所以向上转型
  FlyAble f = new Bird();
  f.Fly();
  TalkAble t = new Person();
  t.Talk();
  SwimAble s = new Fish();
  s.Swim();
}

注意:
private、static、final不能出现在抽象方法中(它们会导致抽象方法无法被重写)
final:修饰的类为太监类,顾名思义,不会有任何子类。

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/126116600