继承和重写
继承
-
继承:是一种基于已有类(父类
Father
)创建新类(子类son
)的一种方式 -
Object
类是所有类的父类 -
Java中类只有单继承,而不是多继承
-
如果一个类由
final
修饰,则其没有子类,如:String
System
基本数据类型包装类:int
Integer
,byte
Byte
,short
Short
,long
Long
,float
Float
,Double
,Boolean
,Character
-
不是父类所有的方法和成员变量子类都可以继承
private
修饰的方法和成员变量不能被子类继承 -
子类可以继承成员变量 如果子类成员变量名(而不是数据类型)和父类相同,则子类对象调用的是子类中的变量
重写
Father
类:
Public class Father{
public void eat(){
System.out.println("爸爸用筷子吃饭");
}
}
Son
类:
Public class Son extends Father{
@Override
//改写后的方法可以用@Override注解修饰而不报错,不加的话则是一个新方法
public void eat(){
Super.eat();//调用父类eat方法
System.out.println("儿子用叉子吃饭");
}
}
Test
类:
Public class Test{
public static void main(String[] args) {
Son son = new Son();
son.eat();
}
}
如何重写
- 重写后的方法访问权限(
public
protected
默认
private
)要么和父类方法相同, 要么大于父类方法。 - 父类中
final
修饰的方法子类不允许被重写,但是可以被继承。 - 父类中
static
修饰的方法,子类不允许重写,但可以被继承(静态的,建议用类名调用)。 - 子类重写后的方法不能添加
static
修饰 - 重写后的方法,方法名必须和父类方法名相同,方法调用的参数列表除名字不做限制外,其他必须相同。
- 返回值:
- 如果父类方法为void或基本数据类型,则重写后的方法必须和父类方法保持一致
- 若父类方法的返回值为引用类型 则重写后的方法返回值要么与父类一致,要么是父类方法返回值的子类