package american.people;
import england.people.Father;
public class Son extends Father {
public String hand;
public String getHand() {
return hand;
}
}
package england.people;
public class Father {
private int money;
protected int height;
int weight;
}
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;
son.hand = "一双大手";
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,grandson.foot,grandson.height);
}
}
class A {
double f(float x,float y) {
return x+y;
}
public int g(int x,int 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);
int m=b.g(3,5); //b调用继承的方法
System.out.println("调用继承方法得到的结果:"+m);
}
}
public class UniverStudent extends Student {
boolean isMarriage; //子类新增的结婚属性
UniverStudent(int number,String name,boolean b) {
super(number,name);
}
public boolean getIsMarriage(){
return isMarriage;
}
}
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;
}
}
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+"未婚");
}
}
}
public class Average extends Sum {
double n; //子类继承的int型变量n被隐藏
public double f() {
double c;
super.n=(int)n; //子类double型变量n进行int转换运算的结果赋值给隐藏的int型变量n
c=super.f();
return c+n;
}
public double g() {
double c;
c=super.f();
return c-n;
}
}
public class Sum {
int n;
public double f() {
double sum=0;
for(int i=1;i<=n;i++){
sum=sum+i;
}
return sum;
}
}
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);
}
}
public class Anthropoid {
double m=12.58;
void crySpeak(String s) {
System.out.println(s);
}
}
public class People extends Anthropoid {
char m='A';
int n=60;
void computer(int a,int b) {
int c=a+b;
System.out.println(a+"加"+b+"等于"+c);
}
void crySpeak(String s) {
System.out.println(m+"**"+s+"**"+m);
}
}
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.m
People zhang=(People)monkey; //把上转型对象强制转化为子类的对象
zhang.computer(55,33); //zhang是子类的对象
zhang.m='T'; //操作子类声明的成员的变量m
System.out.println(zhang.m) ;
}
}
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 ChinaGirlFriend(); //girl是上转型对象
Boy boy = new Boy();
boy.setGirlfriend(girl);
boy.showGirlFriend();
girl = new AmericanGirlFriend(); //girl是上转型对象
boy.setGirlfriend(girl);
boy.showGirlFriend();
}
}
public abstract class Animal{
public abstract void cry();
public abstract String getAnimalName();
}
public class Cat extends Animal {
public void cry() {
System.out.println("喵喵...喵喵");
}
public String getAnimalName() {
return "猫";
}
}
public class Dog extends Animal {
public void cry() {
System.out.println("汪汪...汪汪");
}
public String getAnimalName() {
return "狗";
}
}
public class Simulator {
public void playSound(Animal animal) {
System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");
animal.cry();
}
}
public class Example5_13 {
public static void main(String args[]) {
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
public class AAA implements Printable {
public void on(){ //必须重写接口的abstract方法on
System.out.println("打开电视");
}
public float sum(float x ,float y){//必须重写接口的abstract方法sum
return x+y;
}
}
public interface Printable {
public final int MAX = 100; //等价写法:int MAX=100;
public abstract void on(); //等价写法:void on();
public abstract float sum(float x ,float y);
public default int max(int a,int b) { //default方法
return a>b?a:b;
}
public static void f() {
System.out.println("注意是从Java SE 8开始的");
}
}
public class Example5_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();
}
}
abstract class MotorVehicles {
abstract void brake();
}
interface MoneyFare {
void charge();
}
interface ControlTemperature {
void controlAirTemperature();
}
class Bus extends MotorVehicles implements MoneyFare {
void brake() {
System.out.println("公共汽车使用毂式刹车技术");
}
public void charge() {
System.out.println("公共汽车:一元/张,不计算公里数");
}
}
class Taxi extends MotorVehicles implements MoneyFare,ControlTemperature {
void brake() {
System.out.println("出租车使用盘式刹车技术");
}
public void charge() {
System.out.println("出租车:2元/公里,起价3公里");
}
public void controlAirTemperature() {
System.out.println("出租车安装了Hair空调");
}
}
class Cinema implements MoneyFare,ControlTemperature {
public void charge() {
System.out.println("电影院:门票,十元/张");
}
public void controlAirTemperature() {
System.out.println("电影院安装了中央空调");
}
}
public class Example5_16 {
public static void main(String args[]) {
Bus bus101 = new Bus();
Taxi buleTaxi = new Taxi();
Cinema redStarCinema = new Cinema();
MoneyFare fare;
ControlTemperature temperature;
fare = bus101;
bus101.brake();
fare.charge();
fare = buleTaxi;
temperature = buleTaxi;
buleTaxi.brake();
fare.charge();
temperature.controlAirTemperature();
fare = redStarCinema;
temperature = redStarCinema;
fare.charge();
temperature.controlAirTemperature();
}
}
public interface Advertisement {
public void showAdvertisement();
public String getCorpName();
}
public class AdvertisementBoard {
Advertisement adver ;
public void setAdvertisement(Advertisement adver){
this.adver = adver;
}
public void show() {
if(adver != null){
System.out.println("广告牌显示"+adver.getCorpName()+"公司的广告词:");
adver.showAdvertisement();
}
else {
System.out.println("广告牌无广告");
}
}
}
public class LenovoCorp implements Advertisement { //LenovoCorp实现Avertisement接口
public void showAdvertisement(){
System.out.println("**************");
System.out.println("让世界变得很小");
System.out.println("**************");
}
public String getCorpName() {
return "联想集团" ;
}
}
public class PhilipsCorp implements Advertisement { //PhilipsCorp实现Avertisement接口
public void showAdvertisement(){
System.out.println("@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("没有最好,只有更好");
System.out.println("@@@@@@@@@@@@@@@@@@@@@@");
}
public String getCorpName() {
return "飞利普" ;
}
}
public class Example5_17 {
public static void main(String args[]) {
AdvertisementBoard board = new AdvertisementBoard();
board.setAdvertisement(new LenovoCorp());
board.show();
board.setAdvertisement(new PhilipsCorp());
board.show();
}
}
课后习题(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='A',cEnd='Z';
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){
if(b<a){
int temp=0;
temp=a;
a=b;
b=temp;
}
int r=b%a;
while(r!=0) {
b=a;
a=r;
r=b%a;
}
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[ ]) {
A a=new A();
System.out.println("最大公约数 :"+a.f(36,24));
a = new B();
System.out.println("最小公倍数 :"+a.f(36,24));
}
}