Is-A继承

                                      Is-A继承

(public)class 子类名 extends 父类名
super()调用父类的构造方法
实例1:

1、定义一个第1代手机类(Phone1G)

要求包含以下属性和方法:

属性:电话号码

构造方法:设置属性的值(保证电话号码长度为11或8位)。
成员方法:

定义属性电话号码的getter、setter访问器;

定义拨打电话方法call(String s):通过参数传递要拨打的电话号码,如果参数的长度是8位或11位,则输出:拨打电话,通话中….,否则输出:拨打的号码无效

定义挂机方法endCall():输出“通话结束!”
2、 定义一个第2代手机类(Phone2G)继承第1代手机类(Phone1G)

并新增成员方法拍照tackPictures():输出“拍照!”。
3、定义测试类TestPhone

编写main方法,在main方法中分别建立第1代和第2代手机类对象,

并分别调用方法实现拨打电话、挂断电话、拍照等功能。

public class phone1g {

String  numder;

public phone1g() {}

public phone1g(String a) {

int b=numder.length();

if(b==8||b==11) {

numder=a;

}

else 

System.out.println("输入错误");

}

public String getNumder() {

return numder;

}

public void  setNumder(String n) {

numder=n;

}

public void call(String s) {

int a=s.length();

if(a==8||a==11) {

System.out.println("拨打电话,通话中.....");

}

else 

System.out.println("拨打的号码无效!");

}

public void EndCall() {

System.out.println("通话结束!");

}



public static void main(String[] args) {

// TODO Auto-generated method stub



}



}


public class phone2g extends phone1g{

public void tackPictures() {

System.out.println("拍照");

}



public static void main(String[] args) {

// TODO Auto-generated method stub



}



}


package 作业;

import java.util.Scanner;

public class TestPhone {



public static void main(String[] args) {

Scanner s=new Scanner(System.in);

String c,d;

phone1g a=new phone1g();

phone2g b=new phone2g();

System.out.println("请输入电话号码");

c=s.next();

a.setNumder(c);

a.call(c);

a.EndCall();

System.out.println("请输入电话号码");

d=s.next();

b.setNumder(d);

b.call(d);

b.EndCall();

b.tackPictures();

s.close();

}

}

运行结果:
在这里插入图片描述
实例2:
1、定义一个汽车类(Car),要求包含以下属性和方法:

属性:型号、车牌、时速

构造方法:有参数,通过参数传递设置属性的值。

成员方法:

定义所有属性的getter、setter访问器;

定义方法驾驶drive(int m):传入参数时间m(分为单位),利用时速计算并返回行驶的距离。

定义方法print():输出汽车型号、车牌信息。
2、定义Car的子类Taxi(出租车):

新增属性:fare(每公里单价),startPrice(起步价)

定义构造方法:有参,调用父类的构造方法设置从父类继承的属性的值,设置新属性price、起步价的值。

新增成员方法pay(int m):传入参数时间m,调用父类的drive方法求出行驶的公里数,然后按以下公式计算并返回费用:(3公里以内为起步价)

费用=起步价+(里程数-3公里)*每公里单价
3、定义测试类CarDemo:

编写main方法,在main方法中建立Taxi类对象,并调用其pay方法,传入时间计算某次打车的价钱,并把结果输出。

public class Car {

String x;

double cp,ss;

public Car(String a,double b,double c) {

x=a;cp=b;ss=c;

}

public String getX() {

return x;

}

public double getC() {

return cp;

}

public double getS() {

return ss;

}

public void setX(String q) {

x=q;

}

public void setC(double w) {

cp=w;

}

public void setS(double e) {

ss=e;

}

public double drive(double m) {

System.out.println("行驶的距离为"+ss*(m/60));

return ss*(m/60);

}

public void print() {

System.out.println("汽车的型号为:"+x);

System.out.println("汽车的车牌号为:"+cp);

}


public class Taxi extends Car{

double fare,starPrice;

public Taxi(String a,double b,double c,double d,double e) {

super(a,b,c);

fare=d;

starPrice=e;

}

public void pay(double m) {

if(drive(m)<=3) {

System.out.println("总费用为"+starPrice+"元");

}

else

System.out.println("总费用为"+(starPrice+(drive(m)-3)*fare)+"元");

}



public static void main(String[] args) {

// TODO Auto-generated method stub

}



}


package 作业;

import java.util.Scanner;

public class CarDemo {



public static void main(String[] args) {

String a;double b,c,d, e,i;

Scanner s=new Scanner(System.in);

System.out.println("请输入车辆型号");

a=s.next();

System.out.println("请输入车牌号");

b=s.nextDouble();

System.out.println("请输入时速(千米每小时)");

c=s.nextDouble();

System.out.println("请输入每公里单价");

d=s.nextDouble();

System.out.println("请输入起步价");

e=s.nextDouble();

Taxi T=new Taxi(a,b,c,d,e);

System.out.println("请输入行驶的时间");

i=s.nextDouble();

T.pay(i);

        s.close();

}



}

运行结果为:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值