1.继承(extends)
子类继承父类
public class 子类名 extend 父类
Java不允许多继承(只能有一个父类),但可以多继承
2.继承作用
(1)解决了代码重复
(2)表示一个体系(树)
package HelloWorld;
class Bird{
public void fly() {
System.out.println("飞");
}
}
class Penguin extends Bird{
}
public class SuperDome {
public static void main(String[] args) {
Penguin p=new Penguin();
p.fly();
}
}
3.子类继承父类那些成员是用修饰符决定
(1)public 都可以访问
(2)protected:子类可以访问,即使父类和子类不在同一个包下
(3)如果在同一个包下可以继承缺省的字符(无修饰符)
(4)private:继承不到,因为private只能在同一个类下访问
(5)父类的构造器不能被继承,因为构造器必须与类名相同
4.方法覆盖(Override)
package HelloWorld;
class Bird{
public void fly() {
System.out.println("飞");
}
}
class Penguin extends Bird{
public void fly() {
System.out.println("不会飞");
}
}
public class SuperDome {
public static void main(String[] args) {
Penguin p=new Penguin();
p.fly();
}
}
一同
(1)实参方法签名必须相同(方法签名=方法名+参数列表)
(2)子类方法的返回类型与父类的返回方法相同
(3)子类抛出异常小于父类的异常或者等于
子类可以声明抛出多个属于父类的异常的子类(RuntimeException异常除外)
(4)子类的访问权限比父类更大或者相等
Java5之后注解@override 用来表示重写覆盖
方法存在覆盖,字段不存在覆盖
5.方法覆盖:当父类的子类不符合子类的具体要求,此时需要重新定义父类方法重写方法体
6.方法重载与方法覆盖的区别
方法重写(Override):解决子类继承父类,可能父类的方法不满足的子类的要求、此时需要在子类中重写。
方法重载(Overlord):解决功能相同,方法名不同,参数不同的问题(两同一不同)