继承
基本概要
**关键字:**extends
通过继承可以使子类获得父类的大部分属性和方法,能够有效地提升代码的条理性并且有效实现了代码的复用
注意:在本篇文章中所有举例都将以Persoon为父类,Student为子类进行演示
-
继承的特点
-
Object类
-
super的用法
-
方法重写
继承的特点
- private变量无法被继承
- 一个子类只能有一个父类
- 继承可以使子类得到父类的方法
class person{
int age;
String sex;
String name;
void eat(){
System.out.println("吃了一大碗");
}
}
class Student extends person{
}
public class demo05 {
public static void main(String[] args) {
Student zhang=new Student();
zhang.eat();
}
}
该程序Student类并没有写eat()类,但是Student却可以直接调用,这是通过继承的方式子类继承了父类的方法。
- 无参构造器的构造:
无参构造时,子类会默认继承父类的无参构造,即在子类无参构造的第一行会自行先执行父类的无参构造。
class person{
int age=20;
String sex="man";
String name="张三";
person(){
System.out.println("person的无参构造执行了");
}
}class Student extends person{
Student(){
}
}
public class demo05 {
public static void main(String[] args) {
Student b=new Student();
}
}
如上述代码,Student类是一个空类,在主方法中我们也只创建了一个新的Student类对象,看下运行结果:
我们定义的Student类的无参构造并没有打印文字,这是因为在子类的无参构造中默认的继承了父类的无参构造,在使用继承是,应该注意这些点,通常我们可以使用有参构造来规避这种情况。
Object类
Object类是Java
java.lang
包下的核心类,Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类;
super的用法
super关键字在继承中非常的重要,在之前的java学习中我们还接触过this关键字,this的用处调用当前类的对象,this()用来调用当前类的构造方法,this()必须放在构造方法第一行。与this稍微有些相似,但是super是调用父类的对象,super()则是调用父类的构造方法,且super()在使用时应当放在构造方法第一行。
通过上述的讲述,大家应该也明白在继承时无参构造时子类的无参构造方法中第一行相当于有一个无形的super().
以下程序是对super和super()的测试
class person{
protected int age=20;
protected String sex="man";
protected String name="张三";
person(){
System.out.println("person的无参构造执行了");
}
}
class Student extends person{
private int age;
private String sex;
private String name;
Student(int age,String sex,String name){
super();
this.age=age;
this.sex=sex;
this.name=name;
}
void getStudent(){
System.out.println(this.age+"\t"+super.age);
System.out.println(this.sex+"\t"+super.sex);
System.out.println(this.name+"\t"+super.name);
}
}
public class demo05 {
public static void main(String[] args) {
Student student=new Student(10,"woman","李四");
student.getStudent();
}
}
运行结果:
重写
有些时候从父类继承的某种方法可能并不能满足子类的需求,需要对某些不能满足需求的方法进行一些改造,这就是方法的重写。
注意:重写需要有继承关系,子类重写父类的方法:
- 方法名必须相同
- 参数列表必须相同
- 修饰符可以扩大但不能缩小
时候从父类继承的某种方法可能并不能满足子类的需求,需要对某些不能满足需求的方法进行一些改造,这就是方法的重写。
注意:重写需要有继承关系,子类重写父类的方法:
- 方法名必须相同
- 参数列表必须相同
- 修饰符可以扩大但不能缩小