1.请教老师和各位同学:一下两个问题;

1.请教老师和各位同学:一下两个问题;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package com.imooc.tel;
 
public class Camera implements IPhoto {
 
    @Override
    public void photo() {
        // TODO Auto-generated method stub
        System.out.println("相机有拍照的功能");
    }
 
}
package com.imooc.tel;
 
public abstract class Computer implements INet {
//1.问题1这里为何不加abstract就会报错?
    @Override
    public void network() {
        // TODO Auto-generated method stub
        System.out.println("电脑有上网的功能");
    }
    @Override
    public void web() {
        System.out.println("电脑有了链接WIFI的功能");
    }
 
}
package com.imooc.tel;
//不断的去继承上一个;
public class FourhPhone extends ThirdPhone implements IPhoto{
    /*public void ptoto() {
        System.out.println("手机有了拍照的功能");
    }*/
 
    public void network() {
        System.out.println("手机有了上网的功能");
    }
 
    @Override
    public void photo() {
        // TODO Auto-generated method stub
        System.out.println("手机有了拍照的功能");
    }
}
package com.imooc.tel;
 
 
public interface INet {
    /*
     * 接口中抽象方法可以不写abstract关键字;
     * 接口访问修饰符 默认  public;
     * 当类实现接口时,需要去实现类中所有的抽象方法,否则需要将该类设置为抽象类;
     */
     
    public void network();
//接口中可以包含常量,默认添加public static final关键字;
     
    public static final int temp=6;
    int temp1=20;
    void web();
}
package com.imooc.tel;
/**
 * 具有照相能力的接口;
 */
public interface IPhoto {
public void photo();
}
package com.imooc.tel;
 
public class  SecondPhone extends Telephone{
    public void message() {
        System.out.println("手机有了发短信的功能");
    }
 
}
package com.imooc.tel;
 
public class SmartWatch implements INet {
    public static final int temp=16;
    @Override
    public void network() {
         
        // TODO Auto-generated method stub
        System.out.println("电脑有上网的功能");
    }
    public void web() {
        System.out.println("电脑有了链接WIFI的功能");
    }
 
    public void Web() {
        // TODO Auto-generated method stub
         
    }
 
}
package com.imooc.tel;
 
public class Telephone {
    private String brand;
    private int price;
 
    public String getBrand() {
        return brand;
    }
 
    public void setBrand(String brand) {
        this.brand = brand;
    }
 
    public int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
 
    public void call() {
        System.out.println("手机有打电话的功能");
    }
 
    public Telephone() {
 
    }
 
}
package com.imooc.tel;
 
public class ThirdPhone extends SecondPhone{
    public void video() {
        System.out.println("手机有了看视频的功能");
    }
    public void music() {
        System.out.println("手机有了听英语的功能");
    }
    public void game() {
        System.out.println("手机有了玩游戏的功能");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
测试类:package com.imooc.test;
 
import com.imooc.tel.*;
 
public class PhoneTest {
 
    public static void main(String[] args) {
         
        // TODO Auto-generated method stub
        FourhPhone one = new FourhPhone();
        one.call();
        one.game();
        one.message();
        one.music();
        one.network();
        one.photo();
        one.video();
        System.out.println("****************");
        IPhoto ip = new FourhPhone();
        ip.photo();
        ip = new Camera();
        ip.photo();
        /*
         * INet two = (INet) new FourhPhone(); two.Web();
         */
        // 问题二:此处这样写为什么编译出错,是因为找不到对象吗?
        System.out.println(INet.temp);
        System.out.println(INet.temp1);
        INet net = new SmartWatch();
        System.out.println(net.temp);
        SmartWatch three =new SmartWatch();
        System.out.println(three.temp);
        SmartWatch four =new SmartWatch();
        System.out.println(four.temp);
    }
 
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕珊 2018-01-25 10:48:26

你好!我运行了你的代码,没有发现问题。请问你的代码是编译错误吗,你可以点击出错行的http://img1.sycdn.imooc.com//climg/5a6945430001f19000270034.jpg这个图标,看看有什么错误提示。把错误提示贴出来。

如下是运行结果:

http://img1.sycdn.imooc.com//climg/5a694569000180c102050378.jpg

祝学习愉快!

  • 提问者 Ironxi_work #1
    老师是这样的,我的问题点在Computer的包中和测试类Tese中,一共有两个问题:问题1:为什么不在Computer类名前加abstract会报错?问题二:为什么这样写会报错?INet two = (INet) new FourhPhone(); two.Web();;具体可见注释的地方分别在15行和26行,请老师指点一下;
    2018-01-25 18:50:45
  • 好帮手慕珊 回复 提问者 Ironxi_work #2
    我试了一下,把Computer前面的abstract去掉也没有报错。如果类中有抽象方法的时候,才是必须把类定义成抽象类。你的Computer类中并没有抽象方法,你再试试。第二个问题,是因为INet、FourthPhone以及它的父类都没有Web这个方法,所以才会报错,错误提示建议将Web()改为web()
    2018-01-25 19:05:05
提问者 Ironxi_work 2018-01-24 21:57:42

问题:为何这样写出错(一个在Computer类中,一个在测试类中)?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码