2010年3月10日Java
最终类、抽象类、接口
最终类,不能被继承
final class A
{
}
引入final类的概念是出于安全性的原因或者是面向对象设计上的考虑,有时候希望一些类不能被继承,如String类
有些方法不能被重写,final方法
final 返回类型 方法名()
{
}
抽象类和抽象方法
abstract类和abstract方法
抽象类不能使用new创建对象,必须产生子类,由子类创建对象。
一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现,也就是说,只定义
一个被它所有的子类共享的调用形式,由每个子类自己填写细节。
同样 抽象方法只允许被声明,不允许被实现。
1,抽象类不能被实例化,不能使用new运算符创建对象。
2,如果一个类是abstract类的子类,它必须具体实现父类的abstract方法。
3,abstract类中可能包含abstract方法,对abstract方法只需声明,不需要实现,
4,abstract类中不一定包含abstract方法,但是,一旦某个类中包含了abstract方法,则这个类必须声明为abstract类
接口
为了克服单继承的缺点,Java使用接口,一个类可以实现多个接口,继承分两种,继承父类和实现接口,
interface name
{
final int max = 100;
void speek(String s);
float add(float x,float y);
}
/
class Dog extends Animal implements Eatable,Sleepable
1,如果一个类使用了某个接口,它必须实现该接口的所有方法,并且方法名字、返回类型、参数个数及类型必须与接口定义的完全一致
2,接口中方法默认为 public的,所以累在实现接口方法时,一定用public来修饰
3,接口方法的返回类型如果是void在类中实现该接口方法时,方法体除了一对大括号外可以没有任何语句。否则至少有个return
如果一个类声明实现一个接口,但没有实现接口中的所有方法,那么这个类必须是abstract类
接口的多态
我们可以吧实现某一个接口的类所创建的对象的引用,赋值给该接口声明的接口变量,如tm = new NBA(); tm = new CBA();
其中tm是接口变量,该接口变量tm就可以调用被类实现的接口中的方法,如tm.message()当接口变量tm调用被类实现的接口
中的方法时,就通知相应的对象调用自己实现的接口的方法,因此也就实现了接口的多态。
很累 前几天落下的,总算总结完了。