java 综合练习_Java 之综合练习

// 练习一: 写出程序结果

interface A{}

class B implements A

{

public String func()

{

return "func";

}

}

class Demo

{

public static void main (String[] args)

{

A a = new B();

System.out.println(a.func()); //多态, 对于非静态方法, 编译看左边,运行看右边

// 编译失败, 因为 a 所属的 A 接口中没有定义 func 方法

}

}

// 练习二: 写出程序结果

class Fu

{

boolean show(char a)

{

System.out.println(a);

return true;

}

}

class Demo extends Fu

{

public static void main(String[] args)

{

int i = 0;

Fu f = new Demo();

Demo d = new Demo();

for(f.show('A'); f.show('B')&&(i<2); f.show('C')) // 条件为假, for 循环不运行

{

i++;

d.show('D');

}

}

boolean show(char a)

{

System.out.println(a);

return false;

}

}

// 结果: A B

// 练习三: 写出程序结果

interface A{}

class B implements A

{

public String test()

{

return "yes";

}

}

class Demo

{

static A get()

{

return new B();

}

public static void main(String[] args)

{

A a = get(); // 相当于 A a = new B();

System.out.println(a.test()); // 编译失败, A 接口中没有定义 test() 方法

}

}

// 练习四: 写出程序结果

class Super

{

int i = 0;

public Super(String a) // 带参数构造函数

{

System.out.println("A");

i = 1;

}

public Super() // 空参数构造函数

{

System.out.println("B");

i += 2;

}

}

class Demo extends Super

{

public Demo(String s) // 带参数构造函数

{

System.out.println("C");

i += 5; // 子类中没有定义 i, 直接访问父类的 i

}

public static void main(String[] args)

{

int i = 4;

Super d = new Demo("A");

System.out.println(d.i);

}

}

// 输出结果: B C 7

// 练习五: 补足代码, 调用两个函数, 要求用匿名内部类

interface Inter

{

void show(int a, int b);

void func();

}

class Demo

{

public static void main(String[] args)

{

// 补足代码, 调用两个函数, 要求用匿名内部类

Inter in = new Inter()

{

public viod show(int a, int b)

{}

public void func()

{}

}; // 多态

in.show(3,4);

in.func();

}

}

// 练习六: 写出错误答案错误的原因, 用单行注释的方式

class Demo

{

int show(int a, int b){return 0;}

}

下面哪些函数可以存在于 Demo 的子类中

A. public int show(int a, int b){return 0;} // 可以, 函数覆盖

B. private int show(int a, int b){return 0;} // 不可以, 权限不够

C. private int show(int a, long b){return 0;} // 可以, 子类特有方法

D. public short show(int a, int b){return 0;} // 不可以, 调用的不确定性

E. static int show(int a, int b){return 0;} // 不可以, 静态只能覆盖静态

// 练习七:

interface A

{

void show();

}

interface B

{

void add(int a, int b);

}

class C implements A,B

{

// 程序代码

private int x, y;

public void add(int x, int y)

{

this.x = x; // 将局部变量x, y 存储到堆内存中

this.y = y;

}

public void show()

{

System.out.println(this.x + this.y); //调用堆内存中的变量

}

}

class D

{

public static void main(String[] args)

{

C c = new C();

c.add(4,2);

c.show(); // 通过该函数打印以上两个数的和

}

}

// 练习八: 写出程序结果

class Demo

{

public static void main(String[] args)

{

try

{

showExe();

System.out.println("A");

}

catch(Exception e)

{

System.out.println("B");

}

finally

{

System.out.println("C");

}

System.out.println("D"); // 异常已经被解决, 最后肯定会输出 D

}

public static void showExe()throws Exception

{

throw new Exception();

}

}

// 结果: B C D

// 练习九: 写出程序结果

class Super

{

int i = 0;

public Super(String s)

{

i = 1;

}

}

class Demo extends Super

{

public Demo(String s)

{

i = 2;

}

public static void main(String[] args)

{

Demo d = new Demo("yes"); // 父类中没有空参数构造函数, 编译失败

System.out.println(d.i);

}

}

class Super

{

int i = 0;

public Super()

{

i = 1;

}

public Super(String s)

{

i = 1;

}

}

class Demo extends Super

{

public Demo(String s)

{

i = 2;

}

public static void main(String[] args)

{

Super d = new Demo("yes");

System.out.println(d.i); //此时,结果为 2

}

}

// 练习十: 写出程序结果

class Demo

{

public static void func()

{

try

{

throw new Exception();

System.out.println("A"); // 该条语句无法被执行, 废话! 编译失败

}

catch(Exception e)

{

System.out.println("B");

}

}

public static void main(String[] args)

{

try

{

func();

}

catch(Exception e)

{

System.out.println("C");

}

System.out.println("D");

}

}

// 练习十一:

class Demo

{

public void func()

{

// 位置一

}

class Inner{}

public static void main(String[] args)

{

Demo d = new Demo();

// 位置二

}

}

A. 在位置1 写 new Inner(); // 可以

B. 在位置2 写 new Inner(); // 不可以, 因为主函数是静态的, 只能调用静态成员, 所以内部类也必须是 static 的

C. 在位置2 写 new d.Inner(); // new new Demo().Inner(); 格式错误, 正确格式: new Demo().new Inner();

D. 在位置2 写 new Demo.Inner(); // 格式正确, 但是 Inner 必须是静态的.

// 练习十二: 写出程序结果

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); // 134 , 注意是字符串

foo(1);

System.out.println(output); // 13423, output 是静态全局变量

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值