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();//调用抽象类的具体方法
 }
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚出生几天的宝宝拉肚子怎么办 刚出生的宝宝拉肚子怎么办 出生八天的宝宝拉肚子怎么办 刚出生婴儿拉水怎么办 三岁宝宝一直吐怎么办 3岁宝宝一直吐怎么办 5个月宝宝一直吐怎么办 新生儿睡反了觉怎么办 吃母乳奶流量大怎么办 两个月宝宝有痰怎么办 婴儿瞌睡睡倒了怎么办 侧切伤口崩开了怎么办 脐带30天未脱落怎么办 洗眉结痂不掉怎么办 新生宝宝生殖器下面破皮怎么办 脐带未脱落渗血怎么办 车停店门口贴发单怎么办 有人要打我我该怎么办 很笨怎么办工作做不好 脸被电焊烤了疼怎么办 脸过敏痒的不行怎么办 领导想让你辞职怎么办 领导强吻我了怎么办 赫曼夏天温度高怎么办 近视看3d电影怎么办 有声挂图撕坏了怎么办 主机没有放光盘的设备怎么办 装显卡是没光驱怎么办 电脑机箱光盘总是出来怎么办 看书网作者密码忘记怎么办 电脑光驱访问出现出错怎么办 电脑不读dvd光盘怎么办 dvd光盘读不出来怎么办 光盘插在电脑里出不来怎么办 cad画斜线不光滑怎么办 ps没有魔棒工具怎么办 洗完鞋子发黄了怎么办 牛拜单车不退押金怎么办 总裁太爱我怎么办小说 小班走丢了怎么办ppt 走丢了怎么办 教案 ppt