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(.......),指定去调用父类的有参数构造器。