0、继承使子类获得父类public、protected类型的字段和方法。
一句话:子类继承父类,子类有了父类所有的public
、protected
类型的字段和方法。相当于你自己原封不动的把相关代码复制粘贴过来是一样的效果。
// 父类 人
public class People {
// 姓名
public String name = "未知";
// 年龄
protected int age = 0;
private String sex = "未知";
public void eat() {
System.out.println("吃饭");
}
protected void sleep() {
System.out.println("睡觉");
}
private void play(){
System.out.println("玩");
}
}
// 子类 学生
public class Student extends People {
}
public class Demo {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.age);
System.out.println(student.name);
// System.out.println(student.sex); 报错
student.eat();
student.sleep();
// student.play(); 报错
}
}
Student extends People
子类继承父类。子类Student
里面什么代码都没写,但是可以使用age
和name
字段,并且可以调用eat()
和sleep()
方法。
但是无法使用sex
字段和play()
方法。
1、子类重写(覆盖)父类字段和方法
// 父类 人
public class People {
// 姓名
public String name = "人名未知";
public void eat() {
System.out.println("人吃饭");
}
}
// 子类 学生
public class Student extends People {
public String name = "学生名未知";
@Override
public void eat() {
// super.eat(); 在这可以调用父类的eat()方法
System.out.println("学生吃饭");
}
public void eatOther() {
// 父类的eat
super.eat();
// 子类的eat
eat();
}
}
public class Demo {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.name); // 结果:学生名未知
student.eat(); // 结果:学生吃饭
student.eatOther(); // 结果:人吃饭 学生吃饭
}
}
name
字段父类有,子类也有,父类字段就被重写(覆盖)了。
eat()
方法父类有,子类也有(方法返回值 方法名 参数都一样),父类方法就被重写(覆盖)了。方法重写(覆盖)必须加上@Override
注解。
如果一个字段或方法被重写(覆盖)了,那我还想继续使用父类的字段或方法怎么办,可以用super
关键字,如super.name
、super.eat()
。
2、抽象类
abstract
修饰的方法是抽象方法(如下eat()
方法),一个类如果有抽象方法那么这个类必须是抽象类(abstract
修饰的类)。
抽象类可以没有抽象方法,但是有抽象方法的必须是抽象类。抽象类可以有正常方法,如下sleep()
方法。
子类如果不是抽象类,那么必须重写(覆盖)父类抽象方法,如下Student
类。子类如果是抽象类可以不必重写(覆盖)父类抽象方法,如下Teacher
类。
// 父类 人
public abstract class People {
public abstract void eat();
public void sleep() {
System.out.println("人睡觉");
}
}
// 子类 学生
public class Student extends People {
// 不重写(覆盖)会报错
@Override
public void eat() {
}
}
// 子类 老师
public abstract class Teacher extends People {
}
3、结语
关注微信公众号:小虎哥的技术博客
每天一篇技术文章,没做到自己抽大嘴巴子,各位监督。
网友评论