定义:
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。'' 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容
比如手机,当描述一个手机时,它具有发短信,打电话,显示来电号码功能,后期由于手机需要在来电显示功能中增加显示姓名和头像,这时可以重新定义一个类描述智能手机,并继承原有描述手机的类。并在新定义的类中覆盖来电显示功能,在其中增加显示姓名和头像功能。
重写注意事项有
1,子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
2,子类与父类的方法声明必须一模一样:函数的返回值类型函数名 参数列表都要一样
当子类的成员与父类的成员变量重名时如何访问变量
1.当子类的成员与父类的成员变量重名时,在子类中直接成员变量或使用this.成员变量名称访问本类的成员变量
2,子类的成员与父类的成员变量重名时,在子类中,super.成员变量访问父类的成员变量
抽象类,抽象方法的定义
被abstract修饰,只有方法声明没有方法主体的方法就是抽象方法
被abstract修饰类就是抽象类
=========================================================
例题
用代码描述
四个轮子的白色的汽车可以跑和加油
两个轮子的红色电动自行车可以跑和充电
要求: 把汽车和电动自行车的共性抽取到交通工具类中
/*
1.定义交通工具类(Vehicle)
a)成员变量
i.轮子个数 wheel
ii.颜色 color
b)成员方法
i.跑 run()
1.打印格式: 4个轮子白色的车在跑
c)要求:
i.成员变量不带权限修饰符,方法是公共权限的.
*/
publicclass Vehicle {
// a)成员变量
// i.轮子个数 wheel
intwheel;
// ii.颜色 color
Stringcolor;
//b)成员方法
// i.跑 run()
// 1.打印格式: 四个轮子白色的车在跑
publicvoid run(){
System.out.println(wheel+"个轮子"+color+"的车在跑");
}
}
/*
2.定义小汽车类(Car),继承Vehicle类
a)成员方法:加油 (addGasoline()))
i.在方法中的输出格式为: 4个轮子的白色小汽车在加油
*/
publicclass Carextends Vehicle{
// a)成员方法:加油 (addGasoline()))
// i.在方法中的输出格式为: 4个轮子的白色小汽车在加油
publicvoid addGasoline(){
System.out.println(wheel+"个轮子的"+color+"小汽车在加油");
}
}
/*
3.定义电动车类(ElectricBicycle),继承Vehicle类
a)成员方法:充电 (charge())
i.在方法中的输出格式为: 2个轮子的黑色电动自行车在充电
*/
publicclass ElectricBicycleextends Vehicle {
// a)成员方法:充电 (charge())
// i.在方法中的输出格式为: 2个轮子的黑色电动自行车在充电
publicvoid charge(){
System.out.println(wheel+"个轮子的"+color+"电动自行车在充电");
}
}
/*
4.定义测试类Test
c)提供main方法
d)在main方法中
i.使用空参构造,创建Car 对象c
ii.把c对象的成员wheel 赋值为 4
iii.把c对象的成员color赋值为 白色
iv.调用c对象成员方法run方法
v.调用c对象的成员方法addGasoline()
vi.使用空参构造,创建ElectricBicycle对象eb
vii.把eb对象的成员wheel 赋值为2
viii.把ed对象的成员color赋值为黑色
ix.调用ed对象成员方法run方法
x.调用ed对象成员方法charge方法
*/
publicclass Test {
publicstaticvoid main(String[] args) {
// i.使用空参构造,创建Car 对象c
Carc = new Car();
// ii.把c对象的成员wheel 赋值为 4
c.wheel = 4;
// iii.把c对象的成员color赋值为 白色
c.color = "白色";
// iv.调用c对象成员方法run方法
c.run();
// v.调用c对象的成员方法addGasoline()
c.addGasoline();
// vi.使用空参构造,创建ElectricBicycle对象eb
ElectricBicycleeb = new ElectricBicycle();
// vii.把eb对象的成员wheel 赋值为2
eb.wheel = 2;
// viii.把ed对象的成员color赋值为黑色
eb.color = "黑色";
// ix.调用ed对象成员方法run方法
eb.run();
// x.调用ed对象成员方法charge方法
eb.charge();
}
}