请说明Java中类的访问控制和类成员的访问控制在类继承中的作用,请编写程序说明?
时间: 2024-02-13 20:01:58 浏览: 20
Java中类的访问控制和类成员的访问控制在类继承中起着重要作用。访问控制可以控制类的可见性和类成员的可见性,使得程序员可以更好地封装代码,确保程序的可靠性和安全性。
在Java中,类的访问控制包括四种访问修饰符:public、protected、private和default(即不写任何修饰符)。类成员的访问控制也包括这四种修饰符,其中public表示对所有类可见,protected表示对同一包中的类和所有子类可见,private表示只对本类可见,default表示对同一包中的所有类可见。
在类继承中,子类可以继承父类的所有非私有成员,包括字段和方法。但是,子类只能访问父类中的public和protected成员,不能访问父类中的private成员。如果父类中的成员没有任何访问修饰符,默认为default,那么子类只能在同一包中访问父类的成员。
下面是一个简单的程序来说明类的访问控制和类成员的访问控制在类继承中的作用:
```java
package com.example;
public class Animal {
public String name;
protected int age;
private int weight;
public Animal(String name, int age, int weight) {
this.name = name;
this.age = age;
this.weight = weight;
}
public void move() {
System.out.println(name + " is moving.");
}
protected void sleep() {
System.out.println(name + " is sleeping.");
}
private void eat() {
System.out.println(name + " is eating.");
}
}
package com.example;
public class Bird extends Animal {
public Bird(String name, int age, int weight) {
super(name, age, weight);
}
@Override
public void move() {
System.out.println(name + " is flying.");
}
public void fly() {
System.out.println(name + " is flying high.");
}
public void sleepAndEat() {
sleep();
// eat(); // 编译错误,无法访问父类中的私有方法
}
}
package com.example;
public class Main {
public static void main(String[] args) {
Bird bird = new Bird("Sparrow", 1, 10);
bird.move();
bird.fly();
bird.sleep();
// bird.eat(); // 编译错误,无法访问父类中的私有方法
}
}
```
在这个程序中,Animal 是一个包含public、protected和private成员的类,Bird 继承了 Animal,并且在继承过程中可以访问Animal中的public和protected成员。在Main类中创建了一个Bird对象,并且调用了它的public方法,但是无法访问Animal中的private成员。