java中的继承
1、类的继承描述的是类与类之间的关系
继承关系--通过已有的类,创建出新类的机制
2、继承是面向对象的一个重要特征【封装 继承 多态】
已有的类我们叫父类【超类】
创建出来的新类我们叫子类
3、如何完成一个继承关系?
通过extends关键字完成一个继承关系
具体格式:
访问修饰符 class 子类类名 extends 父类类名{
}
例如:
package com.click369.test.demo1;
public class Person {
}
package com.click369.test.demo1;
/**
* Student类是子类
* Person类是父类
* @author Administrator
*/
public class Student extends Person{
}
4.java中只支持单继承【一个类只能由一个父类】
例如:
public class Student extends Person , MyClass{ 错误
public class Student extends Person extends MyClass{ 错误
5.充当父类的java类绝对不能用final关键字修饰【被final关键字修饰的类是没有子类的】
例如:
public final class Person {
}
public class Student extends Person { 错误
}
6.所有类都有一个共同的父类,这个父类就是java.lang.Object类,不管是我们自己定义的java类,还是jdk提供的java类,他们都继承过java.lang.Object类,只是在书写的时候没有显示写出而已。【一切皆对象】
7.有继承关系的子类对象的构造过程
我们在创建子类的对象时,调用子类的构造方法,在通过子类的构造方法创建子类对象的时候,会默认先调用父类的无参数构造方法。
例如:
package com.click369.test.demo1;
public class Person {
public Person(){
System.out.println("Person类的构造方法");
}
public Person(int num){
System.out.println("Person类的有参数构造方法num=="+num);
}
}
package com.click369.test.demo1;
/**
* Student类是子类
* Person类是父类
* @author Administrator
*/
public class Student extends Person {
/*
* 因为通过子类的构造方法创建子类对象的时候默认会先调用父类无参数构造方法,所以super()可以被省略
public Student(){
System.out.println("Student类的构造方法");
}
*/
public Student(){
super(); //调用父类无参数构造方法
System.out.println("Student类的构造方法");
}
}
如果现在我们在通过子类的构造方法创建子类对象的时候,需要先调用父类的有参数数构造方法,如果处理?
在子类的构造方法中通过给super传递对应的参数,就可以调用父类的有参数数构造方法。
例如:
package com.click369.test.demo1;
public class Person {
public Person(){
System.out.println("Person类的构造方法");
}
public Person(int num){