对抽象类和接口的总结
这个例子偷了下懒,把接口和抽象类的名字取得很像,容易混淆,有空会再修改一下的:>
by_EvanYoung :>
[code]interface Animalss{}//空接口
// 接口的例子
interface Animals
{
void makeSounds();
void moves();/*接口前面的关键字只能为abstract或public*/
/*接口里只允许声明方法,不允许有实现,因此下面这个实现了的方法不允许出现在接口定义中*/
/*void eats()
{
eats code
}*/
}
// 抽象类的例子
abstract class Animal
{
/*如果只是声明方法没有实现,必须加关键字"abstract"*/
abstract void makeSound();
/*可以有方法的实现,只要有一个抽象方法,此类就满足抽象类的条件*/
void move()
{
/*movecode*/
}
/*可以是空方法,子类可复写或者重载*/
void eat(){}
}
//以下是一个既是继承了抽象类的子类,又是实现了接口的实现类的例子
class Dog extends Animal implements Animals,Animalss/*抽象类不支持多继承,而接口支持*/
{
/*实现了抽象父类唯一的抽象方法makeSound(),自己就不再是抽象类了,另外两个方法move()和eat()直接从父类继承*/
void makeSound()
{
/*make sound code*/
}
/*实现Animals中的方法,注意实现的方法的权限不能低于接口中声明的权限,而接口中声明的方法的权限均为public,所以在实现类的方法前要加关键字public*/
public void makeSounds()
{
/*make sounds code*/
}
void moves()
{
/*moves code*/
}
}[/code][b]
这个例子偷了下懒,把接口和抽象类的名字取得很像,容易混淆,有空会再修改一下的:>
by_EvanYoung :>
[code]interface Animalss{}//空接口
// 接口的例子
interface Animals
{
void makeSounds();
void moves();/*接口前面的关键字只能为abstract或public*/
/*接口里只允许声明方法,不允许有实现,因此下面这个实现了的方法不允许出现在接口定义中*/
/*void eats()
{
eats code
}*/
}
// 抽象类的例子
abstract class Animal
{
/*如果只是声明方法没有实现,必须加关键字"abstract"*/
abstract void makeSound();
/*可以有方法的实现,只要有一个抽象方法,此类就满足抽象类的条件*/
void move()
{
/*movecode*/
}
/*可以是空方法,子类可复写或者重载*/
void eat(){}
}
//以下是一个既是继承了抽象类的子类,又是实现了接口的实现类的例子
class Dog extends Animal implements Animals,Animalss/*抽象类不支持多继承,而接口支持*/
{
/*实现了抽象父类唯一的抽象方法makeSound(),自己就不再是抽象类了,另外两个方法move()和eat()直接从父类继承*/
void makeSound()
{
/*make sound code*/
}
/*实现Animals中的方法,注意实现的方法的权限不能低于接口中声明的权限,而接口中声明的方法的权限均为public,所以在实现类的方法前要加关键字public*/
public void makeSounds()
{
/*make sounds code*/
}
void moves()
{
/*moves code*/
}
}[/code][b]