为了账号安全,请及时绑定邮箱和手机立即绑定

为什么无法实例化iphone phone a = new iphone();

为什么无法实例化iphone phone a = new iphone();

慕莱坞1282154 2017-10-09 09:31:16
package com.ljh;    abstract class phone {    public abstract void call();    public abstract void send();}public abstract class iphone extends phone{    public void call(){        System.out.println("通过键盘打电话");    }    public void send(){        System.out.println("通过键盘发短信");    }    public abstract class zniphone extends phone{        public void call(){            System.out.println("通过语音打电话");        }        public void send(){            System.out.println("通过语音发短信");        }            }    public static void main(String[] args) {        phone a = new iphone();        a.call();                            }    }
查看完整描述

4 回答

?
工程小哥

TA贡献2条经验 获得超2个赞

抽象类不能实例化

查看完整回答
1 反对 回复 2017-10-09
?
望远

TA贡献1017条经验 获得超1032个赞

iphone类是抽象类,抽象类无法实例化。

iphone类继承自抽象类 phone并实现了phone类里面所有的抽象方法,虽然iphone被你声明为抽象类,但其类体内部不存在任何的抽象方法所以解决方法:

  1.  public abstract class iphone extends phone去掉abstract关键字即可

  2.  phone a = new iphone(){
            	
     };

    使用匿名内部类的方法实例化抽象类iphone的一个匿名子类,实现iphone类里面的抽象方法,但其类体内部不存在任何的抽象方法,所以类体里为空实现

查看完整回答
1 反对 回复 2017-10-09
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

既然Phone是抽象类,那么继承他的类就不用再用abstract了。把iphone上面的abstract去掉就可以了。

查看完整回答
1 反对 回复 2017-10-09
?
Developer_Zuck

TA贡献112条经验 获得超42个赞

abstract类是抽象类,不能够实例化,不能new出来的!可以有构造函数,其构造函数和实体类的构造函数没什么区别。

查看完整回答
1 反对 回复 2017-10-09
?
韩默思

TA贡献10条经验 获得超3个赞

首先,你得明确这样定义究竟想要做什么。一般而言,定义一个抽象类或者接口,起到一个指导者的作用。在抽象类或者接口中定义你想要做的事情,然后定义新的类去实现你的抽象类或者接口(实现方法)。当这些做好之后,你就可以通过抽象类或者接口去调用和实例化实现了其抽象方法或者接口方法的类(也就是调用方法得到具体实现)。比如,像你写的代码中,将iphone类中的abstract关键字去掉,这时候就是iphone去实现phone抽象类。然后你在main或者测试方法中就可以这样来调用phone test = new iphone(); 然后直接用test对象去调用实现的方法。最后提醒一下你,类或者抽象类以及接口首字母记得大写。

查看完整回答
反对 回复 2017-10-09
?
天行者1037991

TA贡献11条经验 获得超4个赞

iphone 是抽象类,要实现其中的方法吧

查看完整回答
反对 回复 2017-10-09
  • 4 回答
  • 0 关注
  • 2480 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信