//继承:
使用继承后,方便修改代码,减少代码量;
起到代码重用;
使用extends修饰;
语法:
pubilc
class 子类名 extends 父类名;
在继承中,中能继承一个父类;
子类访问父类要使用super
关键字,super代表父类对象;
实例化子类对象,会默认先执行父类的无参数构造,在执行子类的无参数构造;
实例化子类有参数构造时,使用super(参数)重复调用父类中的有参数构造,默认会直接调用父类的有参数构造,而不会调用无参构造;
科普:
子类不可以继承父类的构造方法;
被子类继承的类叫做父类,基类或者超类;
object类时所有类的父类,在JAVA中,所有的java类都是直接或间接的继承了java.lang.Object类,Object类是所有java类的祖先;
super语句必须在子类的方法或构造方法中,而不是其他位置;(如果没有使用extends关键字,也就是没有显式的继承某个类,那么这个类直接继承Object类;)
特别注意:如果存在多级继承关系,则在创建一个子类对象时,则会多次向更高一级的父类应用,一只执行顶级父类Object类的无参构造方法为止;
语法:(注意:如果在子类构造方法中调用父类构造,super语句必须是第一句;)
访问父类构造方法:
super(); //当直接 super() 的时候是调用父类的无参数构造;
super(name); //当s uper(参数)括号里有参数的时候,则调父类的有参数构造;
访问父类属性:
super.name;
访问父类方法:
super.print();
一个构造方法中不允许同时使用 this 和 super 语句调用构造方法(否则只执行俩条的第一条(指那条排第一,就执行那句));
在类方法中(static 修饰的方法)不允许出现 this 或 super 关键字;
重写:
在子类中可以根据需求对父类继承的方法进行重新编写,称为方法的重写或方法的覆盖;
方法重写必须满足以下条件:
1.重写方法和被重写方法必须具有相同的方法名;
2.重写方法和被重写方法必须具有相同的参数列表;
3.重写方法的放回
值类型必须和被重写方法的放回值类型相同;
4.重写方法不能缩小被重写方法的
访问权限;
重载跟重写之间的区别:
重载涉及同一个类中的同名方法(必须在同一个类中),要求方法名相同,参数列表不同,与返回值,访问修饰符无关;
重写涉及的时父类和子类之间的同名方法,要求方法名相同,参数列表相同,返回类型相同,访问修饰符不能大于父类;
抽象类和抽象方法:
抽象类和抽象方法都是用abstract来修饰;(抽象类不能同new实例化)
抽象类中可以没有,有一个或多个抽象方法,甚至全部方法都可以时抽象方法;
抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类,子类必须重写所有的抽象方法才能实例化;
抽象方法只能在抽象类中,抽象方法没有方法体(即指{ }大括号);
语法:
public abstract void print(); 没有大括号;
abstract不能来修饰属性和构造方法;
抽象类可以有构造方法,其构造方法可以被本类的其他构造方法调用,若构造方法不是有private修饰,也可以被子类中的构造方法调用;
abstract 不能和 private 同时修饰一个方法;
abstract 不能和 static 同时修饰一个方法;
abstract 不能和 final 同时修饰一个方法;