您的位置:首页 > 编程语言 > Java开发

Java-Java编程思想第四版 第七章 练习(2)

2018-02-09 15:28 393 查看
练习16:创建一个名为Amphibian的类,由此继承产生一个成为Frog的类,在基类中设置适当的方法,在main()中,创建一个Frog向上转型至Amphibian, 然后说明所有方法都可工作。import static net.mindview.util.Print.*;class Amphibian{public void climb(){print("climb");}public static void shout(Amphibian i){print("Amphibian-shout");}}class Frog extends Amphibian{public void jump(){print("jump");}}public class Ja7_7_16{public static void main(String[] args){Frog fg=new Frog();fg.jump();fg.climb();Amphibian.shout(fg);}}
练习18:创建一个含有static final域和final域的类,说明二者间的区别。import static net.mindview.util.Print.*;import java.util.*;class A{private static Random rand=new Random();private static final int i1=rand.nextInt(20);private final int i2=rand.nextInt(20);private int i3=rand.nextInt(20);public String toString(){return "i1="+i1+"  "+"i2="+i2+"  "+"i3="+i3;}}public class Ja7_8_18{public static void main(String[] args){A a=new A();print(a);print(a);A b=new A();print(b);print(b);}}/**output:i1=6  i2=13  i3=14i1=6  i2=13  i3=14i1=6  i2=16  i3=2i1=6  i2=16  i3=2* */练习19 : 创建一个含有指向某对象的空白final引用类。在所有构造器内部都执行空白final的初始化操作。说明Java确保final在使用前必须初始化,且一旦被初始化即无法改变class A{public  A(int i){System.out.println("I am A"+i);}}class B{private final A a;public  B(){a=new A(5);//! a=new A(6);}/*public void C(){a=new A();}*///   can't be initialized in this method.}public class Ja7_8_19{public static void main(String[] args){B b=new B();}}注:final变量的初始化只能在定义处或者在构造器中,不能在普通方法中进行。注:final变量只能被初始化一次。练习20:展示@Override注解可以解决本节中的问题
import static net.mindview.util.Print.*;class A{//private void aa(){public void aa(){print("I am /*private*/");}}class B extends A{@Override public void aa(){print("I am public");}}public class Ja7_8_20{public static void main(String[] args){B b=new B();b.aa();}}
练习24:在Beetle.java中,从Beetle类继承产生一个具体类型的“甲壳虫”。其形式与现有类相同,跟踪并解释其输出结果import static net.mindview.util.Print.*;class Insect {private int i = 9;private int l = printInit("Insect.l initialized");protected int j;Insect() {print("i = " + i + ", j = " + j);j = 39;}private static int x1 =printInit("static Insect.x1 initialized");static int printInit(String s) {print(s);return 47;}}class Beetle extends Insect {private int k = printInit("Beetle.k initialized");public Beetle() {print("k = " + k);print("j = " + j);}private static int x2 =printInit("static Beetle.x2 initialized");public static void main(String[] args) {print("Beetle constructor");Beetle b = new Beetle();}}public class Ja7_9_24 extends Beetle{public static void main(String[] args) {print(" constructor");Ja7_9_24 b = new Ja7_9_24();}}/*output:static Insect.x1 initializedstatic Beetle.x2 initializedconstructorInsect.l initializedi = 9, j = 0Beetle.k initializedk = 47j = 39*/

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