一、继承与重写
1. 继承
就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。
继承的作用
通过继承可以快速创建新的类,实现代码的重用,提高程序的可维护性,节省大量创建新类的时间,提高开发效率和开发质量。
继承的优点:
继承过来的字段和方法,可以像任何其他字段和方法一样被直接使用;
在子类中可以声明一个与父类中同名的新字段或静态方法,从而“隐藏”父类中的字段和方法;
可以在子类总声明一个在父类中没有的新字段和方法;
可以在子类中编写一个父类当中具有相同名的新实例方法,这称为“方法重载”或“方法覆盖”;
可以在子类中编写一个调用父类构造方法的子类构造方法,既可以隐式地实现,也可以通过使用关键字super来实现。
2.重写
如果在子类中定义的一个方法,其名称、返回值类型和参数列表正好与父类中的某个方法的名称、返回值的类型和参数列表相匹配,那么可以说,子类的方法重写了父类的方法。
在类体系结构中,当子类中的方法与其父类中的方法具有相同的方法名时,则认为子类中的方法重写了父类中的方法。从子类中调用重写方法时,将总是调用出现在子类中的方法,而父类中的方法被隐藏。
二、父类与子类
继承的主要优势在于代码的可重用性。一个类一经定义和调试,便可以用来创建新的子类,这样做除了节省大量的时间和精力之外,还无须重新输人相同的代码。另外,父类的数据和方法可用于它的子类,但如果将父类的数据和方法声明为私有使用(关键字为pri-vate),则子类不能访问它们。
4、super的用法
super的三种用法:
1.在子类的成员方法中,访问父类的成员变量。
2.在子类的成员方法中,访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法(包括重载方法)。
5.@override注解
用来检测当前的方法,是否是重写的方法,起到【校验】的作用
public class Fu{
public void how(){
System.out.println("how方法被调用");
}
}
public class Zi extends Fu{
public void method(){
System.out.println("method方法被调用");
}
}
public class Demo{
public static void main(String[]args){
Fu f=new Fu();
f.how();
Zi z=new Zi();
z.method();
z.how();
}
}
public class Fu{
private void how(){
System.out.println("Fu中how()方法被调用");
}
void method(){
System.out.println("Fu中method()方法被调用");
}
}
public class Zi extends Fu{
@Override
private void show(){
System.out.println("Zi中how()方法被调用");
}
@Override
private void method(){
System.out.println("Zi中method()方法被调用");
}
@Override
public void method(){
System.out.println("Zi中method()方法被调用");
}
}