<script language=javascript>
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert("左");
}
else if (window.event.button == 2)
{
alert("右");
}
}
</script>
------------------------
抽象类
开放分类: 编程
抽象类与接口紧密相关,它们不能实例化,并且常常部分实现或根本不实现。抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承。从抽象类派生的类仍可实现接口。可以在创建组件时使用抽象类,因为它们使您得以在某些方法中指定不变级功能,但直到需要该类的特定实现之后才实现其他方法。抽象类也制定版本,因为如果在派生类中需要附加功能,则可以将其添加到基类而不中断代码。
在实现抽象类时,必须实现该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值。
抽象类不能被实例化,也就是不能用new关键字去产生对象
抽象方法只需声明,而不需实现
抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类
不同之处:
1、定义
抽象类表示该类中可能已经有一些方法的具体定义,但是接口就仅仅只能定义各个方法的界面,不能有具体的实现代码在成员方法中。
1、用法
抽象类是子类用来继承的,当父类已有实际功能的方法时,该方法在子类中可以不必实现,直接引用的方法,子类也可以重写该父类的方法。
而实现 (implement)一个接口(interface)的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
有鉴于此,在实现接口时,我们也常写一个抽象类,来实现接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰。
------------------------------------------------------------
------------------------------------------------------------
虛函数,抽象方法,接口之间的区别
虛函数:由virtual声明,它允许在派生类中被重写,要重写方法,必须先声明为virtual
public class myclass class myclass1:myclass
{ {
public virtual int myint() public override int myint()
{ {
函数体; 函数体1;
} }
注:虚函数中可以有函数体,在子类里可以重写它,也可以不重写他
抽象类、抽象函数:由abstract声明,在抽象类中可以定义抽象方法,抽象方法基本沒有执行代码,派生类必须重写它,提供其执行代码:
public abstract class myclass public class myclass1:myclass
{ {
public abstract int myint(); public override int myint()
} {
函数体;
}
}
注:抽象函数里没有实现代码,如有派生类,必须重写他。--从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。
接口:由interface声明,是特殊的抽象类,是方法、属性、事件和索引符的组合,沒有字段,其成员无执行方式,无构造函数,不允许进行运算符重载,接口和它的没有任何访问修饰符,它总是公共的,不能声明为虚拟或静态,继承自接口的派生类必须实现接口中的所有方法
一个接口可从一个或多个基接口继承。
当基类型列表包含基类和接口时,基类必须是列表中的第一项。
实现接口的类可以显式实现该接口的成员。显式实现的成员不能通过类实例访问,而只能通过接口实例访问
抽象类与接口的区别:
1.抽象类可以包含非抽象方法和抽象方法。这里非抽象方法就是抽象类自己的成员。而接口里都是“抽象方法”,没有自己的成员
2.一个类可以继承自多个接口,但是只能继承一个类(包括抽象类)。
3.抽象类可以有字段。接口不能
4.子類繼承抽象類必須實現抽象類中所有的抽象方法(還有虛方法和已經實現的方法是吧用是現代),
實現一個接口必須實現接口中所有的方法(接口中方法全部是抽象的)。
总之,接口就相当于一个纯抽象类
2003中不能聲明靜態類,2005可以
静态类不能被继承,也没必要,不能实例化
静态类只能包含静态成员
访问时直接用静态类名加.成员名访问