面向对象三大特性之一继承
继承是Java面向对象编程技术的一块基石,因为他允许创建分等级层次的类。
继承就是子类继成父类的特征和行为,使得子类对象具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的语法
通过 extends 关键字声明一个类是从另外一个类继承而来的,基本形式:
public class 父类A{
//内容:成员属性,成员方法
}
public class 子类B extends 父类A{
//内容:类体
}
public class FlyCar extends Car {
//会飞的车,继承了基础的车
}
继承的作用
主要是解决软件的复用问题,节约时间,提高开发效率
public class Window{
//玻璃窗
}
public class CarWindow extends window{//继承
//车窗
}
public class RoomWindow extends window{//继承
//房间窗
}
继承特点
- static修饰的属性方法不能被继承(隐藏起来)
- 子类强耦合于父类(耦合指的就是对象之间的依赖性)
- 单继承(一个子类只能继承一个父类)
- 构造方法不会被子类继承,但可以使用**super()**从子类中调用父类的构造方法。
使用super()关键字调用父类中被子类重写的方法,访问父类中被隐藏的字段,例如:
class A{
public String name="普通汽车"; //添加成员变量
public void run() { //添加成员方法run()
System.out.println("我是父类A的方法run()");
}
}
class B extends A{
public String name="超级跑车"; //与父类中同名的字段,隐藏父类
public void run(){ //重写方法run
super.run(); //使用super关键字调用父类中的方法
System.out.println("我是子类B成员方法run()");
System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量
}
}
/*
*测试
*/
public class TestCar {
public static void main(String[] args) {
B car=new B(); //创建子类的一个实例对象car
car.run(); //调用子类中重写的方法
System.out.println("子类的name名字:"+car.name); //调用子类中的name
}
}
运行结果:
方法覆盖(重写)
方法重写是指存在继承关系的两个类中:
- 方法名称完全相同
- 方法的参数完全相同
注意:
- 子类方法的访问限制不能小于父类
- 子类不得比父类抛出更多,更大的异常对象
方法重写和方法重载的区别
方法重载 | 方法重写(覆盖) |
---|---|
在同一个类 | 具有继承关系的两个类 |
方法名称完全相同 | 方法名称完全相同 |
方法参数域类型不同 | 方法参数和类型完全相同 |