-
抽象方法和抽象类都是由abstract修饰
-
abstract的使用注意
抽象方法没有方法体
抽象成员只能存在于抽象类中
抽象类可以有非抽象成员
抽象类的派生类必须实现抽象方法体
抽象类只能用作基类,无法实例化
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace 视频3._5
{
class Program
{
static void Main(string[] args)
{
Pig pig = new Pig(); //实例化子类
pig.Shout(); //调用子类方法
Console.ReadKey();
}
public abstract class Animal //加abstract就是抽象类
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
public abstract void Shout(); //抽象方法
}
public class Pig : Animal //猪类继承了动物类
{
public override void Shout()
{
Console.WriteLine("哼哼叫");
}
}
虚方法与抽象方法的比较:
虚方法 | 抽象方法 |
---|---|
用virtual修饰 | 用abstract修饰 |
要有方法体 | 不允许有方法体 |
可以被子类override | 必须被子类override |
除了密封类都可以写 | 只能在抽象类中 |
override与重载overload的区别:
重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。重载overload是面向过程的概念。
Override是进行基类中函数的重写,Override是面向对象的概念。
不怕不知道,就怕不知道。了解了解,不能等到用时方恨少。