继承,子类能访问父类的实例域吗?请写个具体例子
时间: 2024-09-29 08:11:27 浏览: 38
在面向对象编程中,继承允许子类从父类那里获取属性和方法。对于实例域(也称为成员变量),如果父类中声明的是public或者protected,那么子类是可以直接访问的。
举个例子,在Java中:
```java
class Animal { // 父类
public String name; // 公开的实例域
public Animal(String name) {
this.name = name;
}
}
class Dog extends Animal { // 子类
private int age; // 子类自己的实例域
public Dog(String name, int age) {
super(name); // 调用父类构造函数传递name
this.age = age; // 子类可以直接访问父类的公开实例域
}
public void bark() { // 方法
System.out.println(name + " is barking");
}
}
Dog myDog = new Dog("Max", 5);
// 在这里,myDog可以访问父类Animal的name,因为它是公开的
myDog.bark(); // 输出 "Max is barking"
```
在这个例子中,子类Dog能够访问并修改父类Animal的实例域`name`,但不能直接访问或修改`age`,除非它被声明为public或被重写为public。
阅读全文