您的位置:首页 > 其它

0717 第十二次作业

2018-07-17 18:31 232 查看

一、选择题
1. C
2. B
3. D
4. AC
5. AB
6. AD
7. AC
8. BC

二、判断题
1. T
2. F
3. F
4. T
5. T
6. F
7. T
8. T
9. F
10. T
11. F

三、简答题
1. final和abstract关键字的作用
final:
final修饰的变量会变成常量,只能被赋值一次;
final修饰的方法不能被重写;
final修饰的类不能被继承。
abstract:
abstract修饰的方法是抽象方法,抽象方法没有方法体,且一定在抽象类或接口中;
abstract修饰的类是抽象类,抽象类不一定有抽象方法,抽象类不能被实例化,抽象类的子类要么是抽象类,要么必须重写抽象类中的所有抽象方法。

2. 接口和抽象类的联系与区别
抽象类和普通类想必只是多了可以定义抽象方法而已;
抽象类的成员变量可以是变量也可以是常量;接口的成员变量只能是常量;
抽象类有构造方法;接口没有构造方法;
抽象类的成员方法可以是抽象方法也可以不是,接口的成员方法只能是抽象方法。

3. 内部类的类型及其特点
内部类是定义在类中的类,主要包括成员内部类、静态内部类、局部内部类和匿名内部类。
成员内部类:
成员内部类是最一般的内部类,其访问特点有:
a. 内部类可以直接访问外部类的成员,包括私有的。
b. 外部类要访问内部类的成员必须创建对象,格式为 外部类名.内部类名 对象名 = 外部类对象.内部类对象;

静态内部类:
静态内部类用static修饰,其访问方式是:
外部类名.内部类名 对象名 = 外部类名.内部类对象;(习惯把new放在=的右边)
若外部类也是静态的则可直接用 外部类名.内部类名.内部类方法 对内部类方法进行访问。

局部内部类:
局部内部类定义在方法中,不能通过其他方法直接进行访问。
要访问局部内部类,需要在该类所在的方法内部创建对象。
从局部内部类中访问本地变量,必须声明为final,1.8版本后会默认声明。

匿名内部类:
当某个局部内部类在使用过程中只需创建一个对象时,就可以使用匿名内部类,因为没有类名,也就不能有构造器,匿名内部类必须且只能继承一个父类或一个接口,其格式为:
new 父类构造器名(参数列表){
  匿名内部类类体;
}
或:
new 实现接口(){
  匿名内部类类体;
}

4. 介绍Java垃圾回收机制
在Java中不需要程序员直接控制内存回收,而是由JRE在后头自动回收不再使用的内存,这就是垃圾回收机制。
垃圾回收机制可以提高编程效率,保护程序完整性,其特点有:
*垃圾回收机制只负责回收JVM堆内存中的对象空间,不负责栈内存中的数据;
*对于物理连接,如数据库连接、输入流输出流、Socket链接无能为力,只能手动关闭;
*垃圾回收的发生不可预知,程序无法精确的控制垃圾回收机制执行;
*可将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象;
*JVM有多种垃圾回收实现算法,表现各异;
*垃圾回收机制回收对象前,会先调用它的finalize方法;
*程序员可以通过System.gc()通知系统进行回收,但不一定会回收;
*不要主动调用对象的finalize方法,应交给垃圾回收机制。

五、编码题
1.

1 abstract class Animal {
2     private String name;
3     private String color;
4     private String type;
5
6     public Animal(){}
7     public Animal(String name,String color,String type){
8         this.name = name;
9         this.color = color;
10         this.type = type;
11     }
12
13     public void setName(String name){
14         this.name = name;
15     }
16     public String getName(){
17         return this.name;
18     }
19     public void setColor(String color){
20         this.color = color;
21     }
22     public String getColor(){
23         return this.color;
24     }
25     public void setType(String type){
26         this.type = type;
27     }
28     public String getType(){
29         return this.type;
30     }
31
32     public abstract String shout();
33     public abstract String eat();
34 }
35
36 interface Swim {
37     public abstract String swim();
38 }
39
40 class Rabbit extends Animal {
41     public Rabbit () {}
42     public Rabbit (String name,String color,String type){
43         super(name,color,"哺乳类");
44     }
45
46     public String eat(){
47         return "爱吃胡萝卜";
48     }
49     public String shout(){
50         return "叽叽地叫";
51     }
52 }
53
54 class Frog extends Animal implements Swim {
55     public Frog () {}
56     public Frog (String name,String color,String type){
57         super(name,color,"非哺乳类");
58     }
59
60     public String eat(){
61         return "爱吃虫子";
62     }
63     public String shout(){
64         return "呱呱地叫";
65     }
66     public String swim(){
67         return "游蛙泳";
68     }
69 }
70
71 public class Demo_Animal {
72     public static void main(String[] args){
73         Animal r1 = new Rabbit("美人","黑"," ");
74         System.out.println("那只" + r1.getColor() + "色的,叫" + r1.getName() + "的兔子正在" + r1.shout());
75         System.out.println("兔子是" + r1.getType() + "," + r1.eat());
76         System.out.println("============================");
77         Animal f2 = new Frog();
78         Frog f1 = (Frog)f2;
79         f1.setName("大兵");
80         f1.setColor("绿");
81         f1.setType("非哺乳类");
82         System.out.println("那只" + f1.getColor() + "色的,叫" + f1.getName() + "的青蛙正在" + f1.shout());
83         System.out.println("青蛙是" + f1.getType() + "," + f1.eat());
84         System.out.println("青蛙" + f1.swim());
85     }
86 }

 

2.

1 interface MovieActor {
2     public abstract void movieAct();
3 }
4
5 interface DramaActor {
6     public abstract void dramaAct();
7 }
8
9 interface Singer {
10     public abstract void sing();
11 }
12
13 class Entertainer implements MovieActor,DramaActor,Singer{
14     private String name;
15
16     public Entertainer(){}
17     public Entertainer(String name){
18         this.name = name;
19     }
20
21     public void setName(String name){
22         this.name = name;
23     }
24     public String getName(){
25         return name;
26     }
27
28     public void movieAct(){
29         System.out.println("我能演电影");
30     }
31     public void dramaAct(){
32         System.out.println("我能演电视剧");
33     }
34     public void sing(){
35         System.out.println("我会唱歌");
36     }
37 }
38
39 public class Demo_SuperStar {
40     public static void main(String[] args) {
41         Entertainer ma = new Entertainer("马素素");
42         System.out.println("大家好,我是" + ma.getName());
43         ma.movieAct();
44         ma.dramaAct();
45         ma.sing();
46     }
47 }

 

六、可选题

1.

1 interface PCI {
2     public abstract void send();
3 }
4
5 class VideoCard implements PCI {
6     public void send(){
7         System.out.println("即时演算动画");
8     }
9 }
10
11 class AudioCard implements PCI {
12     public void send(){
13         System.out.println("播放音乐");
14     }
15 }
16
17 class NetCard implements PCI {
18     public void send(){
19         System.out.println("你也网上冲浪啊");
20     }
21 }
22
23 public class Demo_PCI {
24     public static void main(String[] args) {
25         VideoCard video = new VideoCard();
26         AudioCard audio = new AudioCard();
27         NetCard net = new NetCard();
28         video.send();
29         audio.send();
30         net.send();
31     }
32 }

 

2.

1 interface Comparable1 {
2     public abstract int compareTo(Object obj);
3 }
4
5 class Student implements Comparable1 {
6     int num;
7     String name;
8     int age;
9     int score;
10
11     public Student(){}
12     public Student(int num,String name,int age,int score){
13         this.num = num;
14         this.name = name;
15         this.age = age;
16         this.score = score;
17     }
18
19     public void print(){
20         System.out.println("学号:" + num + " 姓名:" + name + " 年龄:" + age + " 分数:" + score);
21     }
22     public int compareTo(Object obj){
23         Student s = (Student)obj;
24         if (this.score > s.score) {
25             return 1;
26         } else if (this.score == s.score) {
27             return 0;
28         } else if (this.score < s.score) {
29             return -1;
30         }
31         return 0;
32     }
33 }
34
35 class News implements Comparable1{
36     int num;
37     String title;
38     String content;
39     int click;
40
41     public News(){}
42     public News(int num,String title,String content,int click){
43         this.num = num;
44         this.title = title;
45         this.content = content;
46         this.click = click;
47     }
48
49     public void print(){
50         System.out.println("新闻编号:" + num + " 标题:" + title + " 内容:" + content + " 点击数:" + click);
51     }
52     public int compareTo(Object obj){
53         News n = (News)obj;
54         if (this.num > n.num) {
55             return 1;
56         } else if (this.num == n.num) {
57             return 0;
58         } else if (this.num < n.num) {
59             return -1;
60         }
61         return 0;
62     }
63 }
64
65 class Demo_Compare {
66     public static void main(String[] args) {
67         Student s1 = new Student(4,"张三",23,96);
68         s1.print();
69         Student s2 = new Student(12,"李四",25,78);
70         s2.print();
71         switch (s1.compareTo(s2)) {
72             case 1:
73                 System.out.println(s1.name + "比" + s2.name + "分数高");
74             break;
75             case 0:
76                 System.out.println(s1.name + "和" + s2.name + "分数一样高");
77             break;
78             case -1:
79                 System.out.println(s1.name + "比" + s2.name + "分数低");
80             break;
81         }
82
83         System.out.println("==============================");
84
85         News n1 = new News(6,"天气预报","雨很大",10086);
86         n1.print();
87         News n2 = new News(21,"中兴制裁","撤销了",186);
88         n2.print();
89
90         switch (n1.compareTo(n2)) {
91             case 1:
92                 System.out.println(n1.title + " 比 " + n2.title + " 顺序靠后");
93             break;
94             case 0:
95                 System.out.println(n1.title + " 和 " + n2.title + " 顺序一致");
96             break;
97             case -1:
98                 System.out.println(n1.title + " 比 " + n2.title + " 顺序靠前");
99             break;
100         }
101     }
102 }

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: