继承(Inheritance):一个类可以继承另一个类的属性和方法(不支持多继承),这个被继承的类称为父类(或超类、基类),继承它的类称为子类(或派生类)。
关键字:extends
public class Parent {
}
public class Son extends Parent {
}
访问控制
public:公共成员,任何类都可以访问。
protected:受保护成员,子类和同一个包内的类可以访问。
default(无修饰符):包私有成员,同一个包内的类可以访问。
private:私有成员,只有类本身可以访问,子类不能直接访问,但可以通过父类的内置函数间接修改。
public class Parent {public String name;protected char sex;String address;private int age;public void setAge(int age){this.age = age;}@Override//重写一下便于打印操作public String toString() {return "Parent{" +"name='" + name + '\'' +", sex=" + sex +", address='" + address + '\'' +", age=" + age +'}';}
}
public class Son extends Parent {Son(){name = "abc";sex = 'M';address = "kkk";// age = 18;setAge(18);}
}
方法重写(Override)
方法重写:子类可以重写父类的方法,使用相同的方法名、参数和返回类型。
@Override 注解:用于标记一个方法是重写父类的方法,增强代码的可读性和可靠性。
public class Parent {public void print(){System.out.println("hello");}
}
public class Son extends Parent {@Overridepublic void print() {System.out.println("你好");}
}
super关键字
访问父类成员:子类可以使用 super 关键字来访问父类的成员(属性和方法)。
调用父类构造方法:子类构造方法中可以使用 super() 调用父类的构造方法。
public class Parent {int age = 2;}
public class Son extends Parent {int age = 1;Son(){super(2);//只能在子类构造器中使用,且必须放在构造器的第一行}public void print(){int age = 0;System.out.println(age);//0 就近原则System.out.println(this.age);//1 本类System.out.println(super.age);//2 父类}}