abstract抽象类
来源:互联网 发布:手机淘宝10.0 编辑:程序博客网 时间:2024/05/01 00:24
抽象类
有些情况下,你希望定义一个超类,该超类定义了一种给定结构的抽象但是不提供任何完整的方法实现。也就是说,有时你希望创建一个只定义一个被它的所有子类共享的通用形式,由每个子类自己去填写细节。这样的类决定了子类所必须实现的方法的本性。这类情形下一种可能发生的情况是超类不能创建一个方法的有意义的实现。
你可以通过指定abstract类型修饰符由子类重载某些方法。这些方法有时被作为子类责任(subclasser responsibility)引用,因为它们没有在超类中指定的实现。这样子类必须重载它们——它们不能简单地使用超类中定义的版本。声明一个抽象方法,用下面的通用形式:
abstract type name(parameter-list);
正如你所看到的,不存在方法体。任何含有一个或多个抽象方法的类都必须声明成抽象类。声明一个抽象类,只需在类声明开始时在关键字class前使用关键字abstract。抽象类没有对象。也就是说,一个抽象类不能通过new操作符直接实例化。这样的对象是无用的,因为抽象类是不完全定义的。而且,你不能定义抽象构造函数或抽象静态方法。所有抽象类的子类都必须执行超类中的所有抽象方法或者是它自己也声明成abstract。
abstract class M{
int a,b;
M(int i,int j){
a=i;
b=j;
}
abstract int callme();
void callmetoo(){ //抽象类中的具体方法是完全可以接受的,且子类不用必须实现
System.out.println("abstract class");
}
}
class N extends M{
N(int i,int j){
super(i,j);//调用超类构造函数
}
int callme(){ //实现抽象类的方法
return a*b;
}
}
public class AbstractDemo {
public static void main(String args[]){
// M m = new M(10,20); 抽象类不能实例化对象
M m ; //虽然不能实例化对象,但是可以创建一个该类的引用变量,从而引用任何从该类派生的对象
N n = new N(10,10);
m=n; //将n的引用赋给m
System.out.println("this is n "+n.callme());
System.out.println("this is m "+m.callme());
m.callmetoo();
n.callmetoo();//调用抽象类的具体方法
}
}
- abstract抽象类和abstract抽象方法
- 抽象类 抽象成员 abstract
- 抽象类(abstract)
- abstract抽象类
- 抽象类(abstract)
- abstract 抽象类
- 抽象类(abstract)
- abstract抽象类
- C#抽象类 abstract
- 抽象类 Abstract Class
- abstract 抽象类 用法
- Abstract抽象类 接口
- abstract 关键字---抽象类
- 抽象类abstract
- 抽象类(abstract)
- Abstract抽象类
- Abstract抽象类测试
- abstract 抽象类
- 社区里的微软面试题及我的解答(2)
- 非常道之CMMI -- 简介(一)
- UnsupportedClassVersionError的解决
- seo工作真的很难啊!
- oracle高级复制配置手记
- abstract抽象类
- 免费网络硬盘绝对免费
- Dojo Learning: Dojo.data
- Mysql 密码
- 遭遇Eclipse3.4BUG
- UnsupportedClassVersionError
- iSpring Free 3.5 (7.0MB) ——专业PPT转SWF,保证您喜欢
- table的操作我找获得行tr行号查过的资料,及隐藏等操作
- 在GreenBrowser中使用35766书签