继承:可以基于已存在的类构造一个新类,继承已存在的类就是复用(继承)这些类的方法和域,在此基础上,还可以添加一些新的方法和域。
1. 继承性
继承性: 把多种有着共同特性的多的类事物抽象成一个类,这个类就是多个类的父类。父类的意义在于可以抽取多个类的共性,代码复用,减少代码量。
例:三个类,Pupil类(小学生),MiddleSchoolStudent类(中学生类),CollegeStudent类(大学生类),他们有一个特性,都要有名字,学号,班级等等属性,都要去上课,考试等行为。
我们可以写一个父类 为 student类(学生),在Student类中实现名字,学号,班级等属性,上课,考试等行为,Pupil类、 MiddleSchoolStudent类、CollegeStudent类 继承 Student 类之后,就不需要自己去实现这些方法,可以直接去访问父类的。上课这个方法你本来要写三遍,继承之后你只用实现一次, 就实现了代码复用,减少代码量。
子类继承的关键字:extends。 A 类 extends B 类,A是B的子类,B是A的父类。
Java 只能单继承 ,即一个类只能有一个父类(A继承B之后,不能在继承其他的类);可以多层继承(A继承B,B继承C);多个类继承一个类(B和C都继承A)。
2. 覆盖方法
子类可以覆盖父类中的方法。
父类,parent.java:
package inherit;
public class Parent {
public void show() {
System.out.println("Parent");
}
}
子类,Son.java 继承 parent.java。
package inherit;
public class Son extends Parent {
@Override
public void show() {
System.out.println("son");
}
public static void main(String[] args) {
Son son = new Son();
son.show();
}
}
运行截图:
子类调用父类的方法:
package inherit;
public class Son extends Parent {
@Override
public void show() {
super.show();
System.out.println("son");
}
public static void main(String[] args) {
Son son = new Son();
son.show();
}
}
运行截图:
3. 子类构造器
子类使用super 来调用父类构造器,父类如下所示:
package inherit;
public class Parent {
protected String name;
public Parent(String name) {
this.name = name;
}
}
子类如下所示:
package inherit;
public class Son extends Parent {
public Son(String name) {
super(name);
}
public void show() {
System.out.println(this.name);
}
public static void main(String[] args) {
Son son = new Son("sd");
son.show();
}
}
运行截图:
没有显式调用父类构造函数,则默认调用父类无参构造函数。
父类的构造器调用以及初始化过程一定在子类的前面。父类如下所示:
package inherit;
public class Parent {
protected String name;
public Parent() {
System.out.println("parent");
}
}
子类如下所示:
package inherit;
public class Son extends Parent {
public Son(String name) {
this.name = name;
}
public void show() {
System.out.println(this.name);
}
public static void main(String[] args) {
Son son = new Son("sd");
son.show();
}
}
运行截图:
3. 子类访问父类的权限
子类访问父类的权限,如下表所示:
父类成员访问属性 | 在父类中的含义 | 在子类中的含义 |
public | 对所有人开放 | 对所有人开放 |
protected | 只有包内其它类、自己和子类可以访问 | 只有包内其它类、自己和子类可以访问 |
缺省(default) | 只有包内其它类可以访问 | 如果子类与父类在同一个包内:只有包内其它类可以访问 否则:相当于private,不能访问 |
private | 只有自己可以访问 | 不能访问 |
标签:Java,name,show,继承,子类,Son,父类,public From: https://blog.51cto.com/xuxiangyang/9038477