0717 第十二次作业
一、选择题
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 }
- java第十二次作业
- 软件工程第十二次作业——例行报告
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币
- 软件工程-东北师大站-第十二次作业(PSP)
- 软件工程第十二次作业 - 每周例行汇报
- 第十二次作业
- 2017秋-软件工程第十二次作业(二)-第十三周例行总结
- 2017年软件工程第十二次作业-版本控制总结
- Java第十二次作业
- 第十二次作业总结
- 第十二次课后作业
- 第十二次课作业(需求管理、外包管理、组织级与大项目管理)
- 吉软_Java57_第十二次作业
- 吉软_java57_第十二次作业
- 2017秋-软件工程第十二次作业(一)-PSP总结
- 耿丹16-1第十二次作业
- 2017秋-软件工程第十二次作业(三)-版本控制报告(个人)
- 第十二次作业总结
- 软件工程第十二次作业——例行报告
- 软件工程——第十二次作业(2)