黑马程序员------毕老师视频笔记第十天------面向对象(面向对象练习题下)
2014-05-25 21:04
555 查看
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
-----------------------------------------------------------------------------------------------------------------------
17.选择题
A.在位置1写new Inner(); //可以
B.在位置2写new Inner(); //不可以,主函数是静态的,如果要访问,Inner需静态
C.在位置2写newd.Inner(); //不可以,格式错误,newnew Demo().Inner
D.在位置2写newDemo.Inner(); //不对,Inner不是静态的
-----------------------------------------------------------------------------------------------------------------------
18.写出程序结果
结果:编译失败,多个catch的时候,父类的catch要放到后面
-----------------------------------------------------------------------------------------------------------------------
19.补足代码
结果:
注意show方法不是静态的,要建立一个对象调用
-----------------------------------------------------------------------------------------------------------------------
20.写出程序结果
结果:
134
13423
-----------------------------------------------------------------------------------------------------------------------
21.建立一个图形接口,声明一个面积函数。圆形和矩形都实现这个接口,并得出两
个图形的面积。注:体现面向对象的特征,对数值进行判断,用异常处理,不合法的
数值要出现“这个数值是非法的”提示,并结束程序。
-----------------------------------------------------------------------------------------------------------------------
22.补足compare函数内的代码,不许添加其他函数
结果:
-----------------------------------------------------------------------------------------------------------------------
23.写出程序结果
结果:4
-----------------------------------------------------------------------------------------------------------------------
24.加入我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工
号以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使
用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
-----------------------------------------------------------------------------------------------------------------------
25.在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,
则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1.要搜
索的字符数组和字符都以参数形式传递给该方法,如果传入的数组为null,应该抛出
IllegalArgumentException异常。在类的main方法中以各种可能出现的情况验证该方法编写
的是否正确,例如,字符不存在,字符存在,传入的数组为null等。
-----------------------------------------------------------------------------------------------------------------------
26.补足compare函数内的代码,不许添加其他函数
补后代码
-----------------------------------------------------------------------------------------------------------------------
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
-----------------------------------------------------------------------------------------------------------------------
17.选择题
class Demo { public void func() <span style="white-space:pre"> </span>{ //位置1 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>class Inner{} <span style="white-space:pre"> </span>public static void main (String [] args) <span style="white-space:pre"> </span>{ Demo d = new Demo(); //位置2 <span style="white-space:pre"> </span>} }
A.在位置1写new Inner(); //可以
B.在位置2写new Inner(); //不可以,主函数是静态的,如果要访问,Inner需静态
C.在位置2写newd.Inner(); //不可以,格式错误,newnew Demo().Inner
D.在位置2写newDemo.Inner(); //不对,Inner不是静态的
-----------------------------------------------------------------------------------------------------------------------
18.写出程序结果
class Exc0 extends Exception{} class Exc1 extends Exc0{} class Demo { public static void main (String [] args) { try { throw new Exc1(); } catch (Exception e) { System.out.println("Exception"); } catch (Exc0 e) { System.out.println("Exc0"); } } }
结果:编译失败,多个catch的时候,父类的catch要放到后面
-----------------------------------------------------------------------------------------------------------------------
19.补足代码
interface Test { void func(); } class Demo { public static void main (String [] args) { //补足代码(匿名内部类) } void show(Test t) { t.func(); } }
结果:
interface Test { void func(); } class Demo { public static void main (String [] args) { //补足代码(匿名内部类) new Demo().show(new Test(){public void func(){}}); } void show(Test t) { t.func(); } }
注意show方法不是静态的,要建立一个对象调用
-----------------------------------------------------------------------------------------------------------------------
20.写出程序结果
class Test { public static String output = ""; public static void foo(int i) { try { if (i == 1) throw new Exception(); output += "1"; } catch (Exception e) { output += "2"; return; } finally { output += "3"; } output += "4"; } public static void main (String [] args) { foo(0); System.out.println(output); foo(1); System.out.println(output); } }
结果:
134
13423
-----------------------------------------------------------------------------------------------------------------------
21.建立一个图形接口,声明一个面积函数。圆形和矩形都实现这个接口,并得出两
个图形的面积。注:体现面向对象的特征,对数值进行判断,用异常处理,不合法的
数值要出现“这个数值是非法的”提示,并结束程序。
interface MyShape { void getArea(); } class NoValueException extends RuntimeException { NoValueException(String msg) { super(msg); } } class Rec implements MyShape { private double len,wid; Rec(double len, double wid) { if (len <=0 || wid <=0) throw new NoValueException("出现非法值"); this.len = len; this.wid = wid; } public void getArea() { System.out.println("rectangle的面积是:"+len*wid); } } class Circle implements MyShape { private double radius; public static final double PI = 3.14; Circle(double radius) { if (radius <= 0) throw new NoValueException("出现非法值"); this.radius = radius; } public void getArea() { System.out.println("circle的面积是:"+PI*radius*radius); } } class Demo { public static void main (String [] args) { Rec r = new Rec(1,3); Circle c = new Circle(-5); r.getArea(); c.getArea(); } }
-----------------------------------------------------------------------------------------------------------------------
22.补足compare函数内的代码,不许添加其他函数
class Circle { private static final double PI = 3.14; private double radius; public Circle(double r) { radius = r; } public static double compare(Circle[] cir) { //程序代码//其实就是求数组中的最大值 } } class Tc { public static void main (String [] args) { Circle [] cir = new Circle[3];//创建了一个类类型的数组 cir[0] = new Circle(1.0); cir[1] = new Circle(2.0); cir[2] = new Circle(4.0); System.out.println("最大的半径值是:"+Circle.compare(cir)); } }
结果:
class Circle { private static final double PI = 3.14; private double radius; public Circle(double r) { radius = r; } public static double compare(Circle[] cir) { //程序代码//其实就是求数组中的最大值 double max = 0; for (int i=0; i<cir.length; i++) { if (cir[i].radius > max) { max = cir[i].radius; } } return max; } } class Tc { public static void main (String [] args) { Circle [] cir = new Circle[3];//创建了一个类类型的数组 cir[0] = new Circle(1.0); cir[1] = new Circle(2.0); cir[2] = new Circle(4.0); System.out.println("最大的半径值是:"+Circle.compare(cir)); } }
-----------------------------------------------------------------------------------------------------------------------
23.写出程序结果
public class Demo { private static int j = 0; private static boolean methodB(int k) { j += k; return true; } public static void methodA(int i) { boolean b; b = i < 10 | methodB(4); b = i < 10 || methodB(8); } public static void main (String [] args) { methodA(0); System.out.println(j); } }
结果:4
-----------------------------------------------------------------------------------------------------------------------
24.加入我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工
号以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使
用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
abstract class Employee { private String name; private String id; private double wage; Employee(String name, String id, double wage) { this.name = name; this.id = id; this.wage = wage; } public String getName() { return name; } public String getID() { return id; } public double getWage() { return wage; } } class Staff extends Employee { Staff(String name, String id, double wage) { super(name, id, wage); } } class Manager extends Employee { private double bonus; public double getBonus() { return bonus; } Manager(String name, String id, double wage, double bonus) { super(name, id, wage); this.bonus = bonus; } } class Demo { public static void main (String [] args) { Staff s = new Staff("张三","0000011",10000); Manager m = new Manager("李四","1000003",20000,10000); System.out.println("******* 员工对象 *********"); System.out.println("姓名:"+s.getName()); System.out.println("工号:"+s.getID()); System.out.println("工资:"+s.getWage()); System.out.println("******* 经理对象 *********"); System.out.println("姓名:"+m.getName()); System.out.println("工号:"+m.getID()); System.out.println("工资:"+m.getWage()); System.out.println("奖金:"+m.getBonus()); } }
-----------------------------------------------------------------------------------------------------------------------
25.在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,
则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1.要搜
索的字符数组和字符都以参数形式传递给该方法,如果传入的数组为null,应该抛出
IllegalArgumentException异常。在类的main方法中以各种可能出现的情况验证该方法编写
的是否正确,例如,字符不存在,字符存在,传入的数组为null等。
class Demo { public static void main (String [] args) { char[] chs = {'a','b','c','d','e','f','g','h'}; System.out.println("d:"+searchChar(chs,'d')); System.out.println("k:"+searchChar(chs,'k')); System.out.println("null:"+searchChar(null,'k')); } public static int searchChar(char[] chs, char key)throws IllegalArgumentException { if (chs == null) throw new IllegalArgumentException(); for (int i=0; i<chs.length; i++) { if (chs[i] == key) return i; } return -1; } }
-----------------------------------------------------------------------------------------------------------------------
26.补足compare函数内的代码,不许添加其他函数
class Circle { private double radius; public Circle(double r) { radius = r; } public Circle compare(Circle cir) { //补足代码 } } class TC { public static void main (String [] args) { Circle cir1 = new Circle(1.0); Circle cir2 = new Circle(2.0); Circle cir; cir = cir1.compare(cir2); if (cir1 == cir) System.out.println("圆1的半径比较大"); else System.out.println("圆2的半径比较大"); } }
补后代码
class Circle { private double radius; public Circle(double r) { radius = r; } public Circle compare(Circle cir) { //补足代码 return this.radius>cir.radius?this:cir; } } class TC { public static void main (String [] args) { Circle cir1 = new Circle(1.0); Circle cir2 = new Circle(2.0); Circle cir; cir = cir1.compare(cir2); if (cir1 == cir) System.out.println("圆1的半径比较大"); else System.out.println("圆2的半径比较大"); } }
-----------------------------------------------------------------------------------------------------------------------
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员------毕老师视频笔记第十天------面向对象(面向对象练习题上)
- 黑马程序员------毕老师视频笔记第十天------面向对象(异常下)
- 黑马程序员------毕老师视频笔记第十天------面向对象(包)
- 黑马程序员------毕老师视频笔记第六天------面向对象(单例设计模式)
- 黑马程序员------毕老师视频笔记第六天------面向对象(对象初始化过程)
- 黑马程序员------毕老师视频笔记第七天------面向对象(模板方法设计模式)
- 黑马程序员------毕老师视频笔记第六天------面向对象(static关键字)
- 黑马程序员------毕老师视频笔记第九天------面向对象(内部类)
- 黑马程序员------毕老师视频笔记第八天------面向对象(Object类)
- 黑马程序员------毕老师视频笔记第七天------面向对象(继承)
- 黑马程序员------毕老师视频笔记第五天------面向对象(封装)
- “黑马程序员”视频学习笔记之面向对象基础及调试问题
- 黑马程序员------毕老师视频笔记第七天------面向对象(final关键字)
- 黑马程序员------毕老师视频笔记第六天------面向对象(javadoc文档的制作)
- 黑马程序员------毕老师视频笔记第八天------面向对象(多态)
- 黑马程序员------毕老师视频笔记第八天------面向对象(接口多态的应用示例)
- 黑马程序员------毕老师视频笔记第18-21天------其他对象(System、Runtime、Data、Calendar、Math)
- 黑马程序员------毕老师视频笔记第五天------面向对象(构造函数)
- php面向对象视频笔记之第一章(面向对象基础)
- 黑马程序员------毕老师视频笔记第五天------面向对象(this关键字)