Java语言只支持单继承,不支持多继承,但是可以多层继承。Object类是Java中所有类的祖宗。
父类
public class Jianlin {
// 公开成员
public long money;
public void youTin(){}
// 私有成员
private String name;
private void shouJi(){}
}
子类
public class Test {
public static void main(String[] args) {
SiCong siCong = new SiCong();
//父类公有成员,子类对象是可以调用的
System.out.println(siCong.money);
siCong.youTin();
//父类私有成员,子类对象时不可以调用的
// System.out.println(siCong.name);
// siCong.shouJi();
}
}
权限修饰符
public class Fu {
// 1、私有:只能在本类中访问
private void privateMethod(){
System.out.println("==private==");
}
// 2、缺省:本类,同一个包下的类
void method(){
System.out.println("==缺省==");
}
// 3、protected: 本类,同一个包下的类,任意包下的子类
protected void protectedMethod(){
System.out.println("==protected==");
}
// 4、public: 本类,同一个包下的类,任意包下的子类,任意包下的任意类
public void publicMethod(){
System.out.println("==public==");
}
}
方法重写
当子类觉得父类方法不好用,或者无法满足子类需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。
注意:重写后,方法的访问遵循就近原则。
父类
public class A {
public void print1(){
System.out.println("111");
}
public void print2(int a, int b){
System.out.println("111111");
}
}
子类
public class B extends A{
// 方法重写
@Override
public void print1(){
System.out.println("666");
}
// 方法重写
@Override
public void print2(int a, int b){
System.out.println("666666");
}
}
注意
- 重写的方法上面,可以加一个注解@Override,用于标注这个方法是复写的父类方法
- 子类复写父类方法时,访问权限必须大于或者等于父类方法的权限
- 重写的方法返回值类型,必须与被重写的方法返回值类型一样,或者范围更小
- 私有方法、静态方法不能被重写,如果重写会报错。
this和super
访问本类成员:
this.成员变量 //访问本类成员变量
this.成员方法 //调用本类成员方法
this() //调用本类空参数构造器
this(参数) //调用本类有参数构造器
访问父类成员:
super.成员变量 //访问父类成员变量
super.成员方法 //调用父类成员方法
super() //调用父类空参数构造器
super(参数) //调用父类有参数构造器
注意:this和super访问构造方法,只能用到构造方法的第一句,否则会报错。