1.什么是继承
java中提供了一个关键字,extends,可以让一个类与另一个类建立起父子关系。
例如
public class B extends A {
---
}
在这里,我们称A类为父类(也被称为基类或者超类)B类称为子类(或者是派生类)。
2.继承的特点
子类可以继承父类的非私有化成员(包括成员变量和成员方法)。
3.继承后对象的创建
子类的对象是由子类、父类共同完成的。
4.使用继承的好处
可以减少代码的编写。
public class People {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Teacher extends People {
private String subject;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void getPeopleName() {
System.out.println(getName());
}
}
5.权限修饰符
用来限制类中的成员(成员变量,成员方法,构造器,代码块。。。。)能够被访问的范围。
修饰符 | 在本类中 | 在同一包下的其他类 | 任意包下的子类中 | 任意包下的任意类中 |
---|---|---|---|---|
private | √ | |||
缺省 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
6.单继承
java是单继承的,不支持多继承,但是支持多层继承
7.Object类
java所有类的祖宗,我们写的任意的一个类都是Object的子孙类。
8.方法重写
当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称,参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。重写后,方法的访问,java会遵循就近原则。
重写需要添加@Override.加上了,安全性增加了,可读性好,子类重写父类方法后,访问权限必须大于或者等于父类该方法的权限(public>protected>缺省),重写方法返回值类型,必须和重写方法和返回值类型一样,或者范围更小。
私有方法,静态方法不能被重写,如果重写会报错。
9.方法重写的应用场景
案例:子类重写Object类的toString()方法,可以返回对象的内容。
也就是父类的方法不满足自己的需求时,就可以方法重写。
10.子类访问的特点
在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。
直接访问就是局部变量,使用this关键字就是子类成员变量,使用super就是父类的成员变量。
package com.web201.extends_visited;
public class People {
String name = "父类的名字";
}
package com.web201.extends_visited;
public class Student extends People {
String name = "子类的名字";
public void printName() {
String name = "局部变量的名字";
System.out.println(name);//局部变量的名字
System.out.println(this.name);//子类的名字
System.out.println(super.name);//父类的名字
}
}
package com.web201.extends_visited;
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.printName();
}
}
11.子类构造器的特点
子类的全部构造器,都会先调用父类的构造器,再执行自己。
因为子类的构造器都默认有一个super();他是默认存在的。
如果父类没有无参数构造器,则我们必须在子类构造器的第一行手写super(.......),指定去调用父类的有参数构造器。