编写一个包含4个类以上的java程序,要求有至少3个类存在继承关系,在父类中分别使用public、protected、friendly、private等权限修饰符修饰成员变量和方法,并观察在不同的包中
时间: 2023-05-03 11:01:38 浏览: 278
该题目要求编写一个包含4个或以上Java程序的包,要求至少有3个类存在继承关系,在父类中区分使用public、protected、friendly、private等权限修饰符修饰成员变量和方法,并观察在不同的包中。
相关问题
编写一个包含4个类以上的Java程序,要求有至少3个类存在继承关系,在父类中分别使用public、protected、friendly、private等权限修饰符修饰成员变量和方法
在Java中,为了演示继承和访问修饰符的概念,我们可以创建一个简单的图形家族(如Shape、Rectangle、Circle),其中Shape是父类,Rectangle和Circle是其子类。下面是一个简化的例子:
```java
// 定义公共访问权限的父类 Shape
public class Shape {
// public 成员变量和方法
public String color; // 公共属性
// 公开的构造函数
public Shape(String color) {
this.color = color;
}
// 公共方法示例
public void draw() {
System.out.println("Drawing a " + color + " shape");
}
}
// 定义受保护访问权限的子类 Rectangle,继承自 Shape
protected class Rectangle extends Shape {
protected int length; // 受保护属性
protected int width;
// 受保护的构造函数
protected Rectangle(String color, int length, int width) {
super(color);
this.length = length;
this.width = width;
}
// 受保护方法示例
protected void drawOutline() {
System.out.println("Drawing outline of a rectangle with length " + length + " and width " + width);
}
}
// 定义友好访问权限的子类 Circle,继承自 Shape
friendly class Circle extends Shape {
friendly double radius; // 友好(默认)属性
private int centerPointX;
private int centerPointY;
// 友好(默认)的构造函数
friendly Circle(String color, double radius, int centerPointX, int centerPointY) {
super(color);
this.radius = radius;
this.centerPointX = centerPointX;
this.centerPointY = centerPointY;
}
// 非公开方法示例
private void drawInterior() {
System.out.println("Drawing interior of a circle with radius " + radius);
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
// 创建 Shape 的实例
Shape shape = new Shape("blue");
// 访问 Shape 的公有成员
shape.draw();
// 子类可以访问父类的所有非私有成员
Rectangle rect = new Rectangle("red", 10, 5);
rect.draw();
rect.drawOutline(); // 可以访问 protected 成员
// Circle 类型可以直接访问友好访问的成员,但是无法直接访问 private 成员
Circle circle = new Circle("green", 7, 15, 20);
circle.draw();
// System.out.println(circle.centerPointX); // 这会抛出异常,因为 centerPointX 是 private 的
}
}
```
在这个例子中,`Shape`类代表公共访问,`Rectangle`和`Circle`类分别继承了`Shape`并展示了受保护和友好访问权限的特点。
idea编写一个包含4个类以上的Java程序,要求有至少3个类存在继承关系,在父类中分别使用public、protected、friendly、private等权限修饰符修饰成员变量和方法,并观察在不同的包中子类继承的不同特点。
在IntelliJ IDEA中创建一个Java程序,首先你需要做的是新建一个项目,然后创建多个包和类。以下是步骤:
1. **新建项目**:在"File"菜单中选择 "New" -> "Project",然后选择 "Java" 并点击 "Next"。
2. **创建包**:为了组织类,你需要在项目结构中创建多个包。例如,你可以创建一个名为`com.example.parentpackage`的包作为父类所在的包,以及`com.example.childpackage1`和`com.example.childpackage2`两个包供子类使用。
3. **设计类结构**:
- **父类(Public访问权限)**: 创建一个名为`ParentClass.java`的文件,在`com.example.parentpackage`包下,将成员变量和方法声明为public,这使得所有子类都能直接访问它们。
```java
package com.example.parentpackage;
public class ParentClass {
public String publicVariable;
public void publicMethod() {
//...
}
}
```
- **保护访问权限(Protected)**: 创建另一个类`ProtectedChild.java`继承自`ParentClass`,将一些变量和方法声明为protected,允许在同一包内的其他类以及子包中的子类访问。
```java
package com.example.parentpackage;
protected class ProtectedChild extends ParentClass {
protected String protectedVariable;
protected void protectedMethod() {
//...
}
}
```
- **友好访问权限(默认)**: 如果在子类中重写了父类的非final方法,可以保持访问级别不变,即友好的(也称为包内可见)。
```java
package com.example.childpackage1;
class FriendlyChild extends ParentClass {
@Override
void friendlyMethod() {
//...
}
}
```
- **私有访问权限(Private)**: 最后,创建一个私有的子类`PrivateChild.java`,它无法直接访问父类的私有成员。
```java
package com.example.childpackage2;
class PrivateChild extends ParentClass {
private String privateVariable; // 子类不能直接访问
//...
}
```
4. **运行和观察**:尝试实例化每个子类并测试访问其各自的成员变量和方法。你会发现public和protected成员可以在任何地方访问,而private成员只能在其自身的类内部访问。
阅读全文