[访问修饰符] class 类名 extends 父类名{}
访问修饰符:public【项目任何地方都可以访问类】 缺省【当前包中】
访问修饰符:
public : 项目任何地方都可以访问
protected : 同包下任意类可以访问【其他包子类也可以访问 static 】
private : 只能自身访问
package-access : 同包下任意类可以访问
继承的应用
定义一个父类
package com.kfm.pm;
public class Pet {
private String name;
private int age;
public String color;
protected double weight;
public Pet(){
}
public Pet(String name, int age, String color, double weight, String voice) {
this.name = name;
this.age = age;
this.color = color;
this.weight = weight;
this.voice = voice;
}
String voice;
private void privateMethod () {
System.out.println("这是一个私有方法");
}
public void eat() {
System.out.println("这是一个eat方法");
}
protected void sleep() {
System.out.println("这是一个protected方法");
}
void packageAccessMethod() {
System.out.println("这是一个packageAccess方法");
}
}
使用继承和重写实现子类
package com.kfm.pm;
public class Dog extends Pet {
// Dog is a Pet Dog 是子类 Pet 是父类 子类是对于父类的扩展
private String lookHouse;
public Dog() {
}
public Dog(String name, int age, String color, double weight, String voice, String lookHouse) {
super(name, age, color, weight, voice);
this.lookHouse = lookHouse;
}
public void lookingHouse() {
System.out.println("狗狗看家");
}
}
使用super关键字调用父类成员
调用父类构造方法:super([实参列表]);
super出现在子类
super访问父类成员
super不能访问父类private成员
super必须用于子类构造函数第一行
方法重写(方法重载:类中多个方法同名,参数类型不同或参数长度,顺序不同)
1,在继承关系中
2,重写和被重写方法名必须相同
3,相同的参数列表
4,返回值类型相同或是子类
5,不能缩小访问权限
6,不能用子类的非静态方法重写(覆盖)父类的静态方法,否则编译报错。
7,不能重写父类中的最终方法。
8,不能用子类的静态方法重写父类的实例方法。
方法隐藏
当发生隐藏的时候,声明类型是什么类,就调用对应类的方法,而不会发生动 态绑
属性只能被隐藏变量可以交叉隐藏:子类实例变量/静态变量可以隐藏父类的实例/静态变量
不能用子类的静态方法隐藏父类中的非静态方法,否则编译报错。,不能被覆盖