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();
}
}
运行结果为: