using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
* C#抽象
* 概念:
* 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类;
* 语法修饰符:abstract
* 抽象类:
* 1.抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;
* 2.重要的是抽象类可以包括抽象方法,这是普通类所不能的;
* 3.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们;
* 4.抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们;
* 抽象类与普通类的区别:
* 1.抽象类不能直接被实例化;
* 2.抽象类中可以包含抽象成员,但但非抽象类中不可以;
* 3.抽象类不能被密封或者静态;
* 抽象方法:
* 1.抽象方法必须声明在抽象类中;
* 2.声明抽象方法时,不能使用virtual、static、private、sealed修饰符;
* 3.在抽象类中抽象方法不提供方法体;
* 抽象属性:
* public abstract double 属性名
* {
* get;set;
* }
* 抽象类特点:
* 1.抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法;
* 2.抽象类不能被实例化;
* 3.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类;
* 4.具体派生类必须覆盖基类的抽象方法;
* 5.抽象派生类可以覆盖基类的抽象方法,也可以不覆盖,如果不覆盖,则其具体派生类必须覆盖它们;
*
*/
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
}
}
//昆虫类(抽象类)
internal abstract class InsectAb//抽象类不能被实例化,不能被sealed密封
{
public void Start()//抽象类可以有构造函数
{
}
public abstract void Update(int i);//抽象方法后面用分号隔开
public abstract void Update(string str);//抽象方法可以重载
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
* C#抽象
* 概念:
* 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类;
* 语法修饰符:abstract
* 抽象类:
* 1.抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;
* 2.重要的是抽象类可以包括抽象方法,这是普通类所不能的;
* 3.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们;
* 4.抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们;
* 抽象类与普通类的区别:
* 1.抽象类不能直接被实例化;
* 2.抽象类中可以包含抽象成员,但但非抽象类中不可以;
* 3.抽象类不能被密封或者静态;
* 抽象方法:
* 1.抽象方法必须声明在抽象类中;
* 2.声明抽象方法时,不能使用virtual、static、private、sealed修饰符;
* 3.在抽象类中抽象方法不提供方法体;
* 抽象属性:
* public abstract double 属性名
* {
* get;set;
* }
* 抽象类特点:
* 1.抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法;
* 2.抽象类不能被实例化;
* 3.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类;
* 4.具体派生类必须覆盖基类的抽象方法;
* 5.抽象派生类可以覆盖基类的抽象方法,也可以不覆盖,如果不覆盖,则其具体派生类必须覆盖它们;
*
*/
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
}
}
//昆虫类(抽象类)
internal abstract class InsectAb//抽象类不能被实例化,不能被sealed密封
{
public void Start()//抽象类可以有构造函数
{
}
public abstract void Update(int i);//抽象方法后面用分号隔开
public abstract void Update(string str);//抽象方法可以重载
}
}