Example5_1.java package england.people; impot american.people.Son; import japan.people.Grandson; public class Example5_1{ public static void main(String args[]){ Son son = new Son(); Grandson grandson = new Grandson(); son.height = "一双大手"; grandson.height = "155"; grandson.hand = "一双小手"; grandson.foot = "一双小脚"; String str = son.getHand(); System.out.printf("儿子:%s,%d\n",str,son.height); str = grandson.getHand(); System.out.printf("孙子:%s,%s,%d\n",str,giandson.foot,grandson.height); } } Example5_3.java class People{ public double x; public void setX(double x){ this.x=x; } public double getDoubleX{ return x; } } class Student extends People{ int x; public int getX(){ //x=20.56; //非法,因为子类的x已经是int型,不是double型 return x; } } public class Example5_3{ public static void main(String args[]){ Student stu=new Student(); stu.x=98; //合法,子类对象的x是int型 System.out.println("对象stu的x的值是:"+stu.getX()); //stu.setX(98.98; //非法,因为子类对象的x已经是int型 stu.setX(98.98); //子类对象调用继承的方法操作隐藏的double型变量x double m=stu.getDoubleX();//子类对象调用继承的方法操作隐藏的double型变量x System.out.pritln("对象stu隐藏的x的值是:"+m); } } Example5_4.java class A{ double f(float x,float y){ return x+y; } public int g(int x,int y){ return x+y; } } class B extands A { double f(float x,float y){ return x*y; } } public class Example5_4{ public static void main(Strinf args[]){ B b=new B(); double result=b.f(5,6); //b调用重写的方法 System.out.println("调用重写的方法得到的结果:"+result); int m=b.g(3,5); //b调用继承的方法 System.out println("调用继承的方法得到的结果:"+m); } } Example5_6.java public class Student{ int number; String name; Student(){ } Student(int number,String name){ this.number=number; this.name=name; } public int getNumber(){ return number; } public String getName(){ return name; } } Example5_7.java public class Example5_7{ public static void main(String args[]){ Average aver=new Average(); aver.n=100.5678; double result1=aver.f(); double result2=aver.g(); System.out.println("result1="+result1); System.out.println("result2="+result2); } } Example5_9.java public class Example5_9{ public static void main(String args[]){ People people=new People(); Anthropoid monkey=people; //monkey是people对象上的上转型对象 monkey.crySpeak("I love this game");//等同于people调用重写的crySpeak方法 //monkey.n=100; //非法,因为n是子类新增的成员变量 //monkey.computer(12,19); //非法,因为computer()是子类新增的方法 System.out.println(monkey.m); //操作隐藏的m,不等同于people.m System.out.println(people.m); //操作子类的m People zhang=(People)monkey; //把上转型对象强制转化为子类的对象 zhang.computer(55,33); //zhang是子类的对象 zhang.m='T'; //操作子类声明的成员的变量m System.out.println(zhang.m); } }
Example5_11.java abstract class GirlFriend{ //抽象类,封装了两个行为标准 abstract void speak() ; abstract void cooking() ; } class ChinaGirlFriend extends GirlFriend { void speak(){ System.out.println("你好"); } void cooking(){ System.out.println("水煮鱼"); } } class AmericanGirlFriend extends GirlFriend { void speak(){ System.out.println("hello"); } void cooking(){ System.out. println("roast beef"); } } class Boy{ GirlFriend friend; void setGirlfriend(GirlFriend f){ friend=f; } void showGirlFriend(){ friend.speak(); friend.cooking(); } } public class Example5_11{ public static void main(String args[ ]) { GirlFriend girl = new ChinaGir1Friend(); //gir1是上转型对象 Boy boy = new Boy(); boy. setGirlfriend(gir1); boy.showGirlFriend(); girl = new AmericanGirlFriend(); //gir1是上转型对象 boy.setGirlfriend(gir1); boy.showGirlFriend(); } } Example5_13.java public class Example5_13 { public static void main(String args[]) { Simulator simulator = new Simulator() ; simulator. playSound(new Dog()) ; simulator.playSound(new Cat()); } } Example5_14.java public class Example05_14 { public static void main(String[] args) { AAA a = new AAA(); System.out.println("接口中的常量"+AAA.MAX); System.out.println("调用on方法(重写的):"); a.on(); System.out.println("调用sum方法(重写的):"+a.sum(12,18)); System.out.println("调用接口提供的default方法"+a.max(12,78)); Printable.f(); } }
编程题(1) class A{ public final void f(){ char cStart = 'a' ,cEnd = 'z' ; for(char c = cStart;c<= cEnd;c++) { System.out.print(" "+c); } } } class B extends A { public void g() { char cStart = 'α' ,cEnd = 'ω'; for(char c = cStart;c<= cEnd;c++) { System.out.print(""+c); } } } public class E{ public static void main (String args[ ]) { B b = new B(); b.f(); b.g(); } } (2) class A { //求最小公约数 public int f(int a,int b) { int max,min,r; if(a<b) { max = b; min = a; } else { max = a; min = b; } while((r=max%min)!=0) { max = min; min = r; } return min; } } class B extends A { public int f(int a,int b) { int m = super.f(a,b); return (a*b)/m; } } class C { public static void main(String[] args) { A a = new A(); System.out.println("最大公约数=" + a.f(4, 6)); B b = new B(); System.out.println("最小公倍数=" + b.f(4, 6)); } }