继承是对现实生活中“分类”概念的一种模拟。
示例:狮子是一种动物。
- 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是“继承”关系的重要性质。
class Animal // 父类
{
}
class Lion : Animal // 子类
{
}
- 从外部使用者角度来看,子类“自动”拥有了父类声明为public和protected的成员,这就是继承的重要特性。
- 子类中的代码可以直接访问父类保护级别的成员,但外界不能通过对象变量来直接访问声明为保护级别的类成员。
class Parent
{
private int privateValue = 100;
protected int protectedValue = 200;
public int publicValue = 300;
// 同一类中的方法可以访问所有字段
public void parentFunc()
{
privateValue++;
protectedValue++;
publicValue++;
}
}
class Child:Parent
{
// 子类可以访问父类中的protected和public字段,但不能访问private字段
public void childFunc()
{
protectedValue++;
publicValue++;
}
}
更进一步:继承环境下的字段访问规则
- 同一类中的实例方法可以访问所有字段。
- 子类实例方法可以访问父类中的protected和public的字段,但不能访问private的字段。
- 变量同名时,“离得最近”、“关系最密切”的变量起作用。