(1)
package england.people;
import 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 = 180;
and =".son.hand ="一双大手";
grandson.height = 155ight = 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,grandson.foot,grandson.height);
}
}
(3)
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.x=98.98; //非法,因为子类对象的x已经是int型
stu. setX(98.98); //子类对象调用继承的方法操作隐藏的double型变量x
double m= stu.getDoublex(); //子类对象调用继承的方法操作隐藏的 double 型变量x
System.out.println("对象 stu隐藏的x的值是:"+m);
}
}
(4)
class A{
double f(float x,float y) {
return x+y;
}
public int g( int x, intint y){
return x+y;
}
}
class B extends A{
double f(float x,float y){ {
return x*y;
}
}
public class Example5_4 {
public static void main(String args[]) {
B b=new B();
double result= b.f(5,6); //b调用重写的方法
System.out.println("调用重写方法得到的结果:" +result);
intm=b.g(3,5); //b调用继承的方法
System.out.println("调用继承方法得到的结果:"+m);
}
}
(6)
public class Example5_6{
public static void main(String args[]){
UniverStudent zhang = new UniverStudent(20111,"张三",false);
int number = zhang.getNumber();
String name = zhang. getName();
boolean marriage = zhang. getIsMarriage( );
System.out.println(name+"的学号是:"+number);
if(marriage ==true){
System.out.println(name +"已婚");
}
else{
System. out. println(name +"未婚");
}
}
}
(7)
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(1n("result1 = "+result1);
System. out.printlr1n("result2 = "+ result2);
}
}
(9)
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);
}
}
(11)
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();
}
}
(13)
public class Example5_13 {
public static void main(String args[]) {
Simulator simulator = new Simulator() ;
simulator. playSound(new Dog()) ;
simulator.playSound(new Cat());
}
}
(14)
public class Example5_14{
public static void main(String args[]) {
AAA a = new AAA() ;
System.out.println("接口中的常量"+ AAA. M" +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();
}
}
5.课后题
(1)
public class A {
public void f()
{
for (int i = 97; i <123; i++)
{
System.out.print((char)i);
}
System.out.println();
}
}
package zimu;
public class B extends A {
public void g()
{
for (int i = 65; i <91; i++)
{
System.out.print((char)i);
}
System.out.println();
}
}
public class C {
public static void main(String[] args) {
A a=new A();
a.f();
B b=new B();
b.f();
b.g();
}
}
(2)
class A{
public int f(int a, int b){
if(b<a){
int temp=0;
temp=a;
a=b;
b=temp
int r=bsa;tr=bx
0){hile(r!=0)
b=a;
a=r;
r=bs
=b8a;
}
return a;
}
}
class B extends A{
public int f(int a,int b) {
int division = super. f(a,b);
return (a* b)/division;
}
public class E{
public static void main (String args[ ]) {
Aa=new A();
System.out.println("最大公约数:"+a.f(36,24
a= new B();
System.out.println("最小公倍数:" + a.f(36,24
}
}