a0d52d5d1975001d1dddb6604daa6ad2

来自「java程序设计教程的源码」· 代码 · 共 57 行

TXT
57
字号
//【例4-9】  同包中的子类只能继承父类中的非私有成员(public、protected和默认成员)。
//程序清单4-9:  InheritanceRuleOfSamePackage.java
package e4_9;

public class InheritanceRuleOfSamePackage {
	public static void main(String args[]) {
		B objB = new B();// 实例化类B
		objB.setA1(10);// 调用父类A中protected方法
		objB.setA2(100);// 调用父类A中protected方法
		objB.setB1(1000);// 调用子类B中public方法
		// 类A中的private变量a1不能被子类B继承
		// System.out.println(objB.a1);
		System.out.println(objB.getA1());// 调用父类A中public方法
		System.out.println(objB.a2);// 调用父类A中默认变量
		// 不能直接访问类B中的被private封装的变量
		// System.out.println(objB.b1);
		System.out.println(objB.getB1());// 调用子类B中protected方法
	}
}

class A {// 类A
	private int a1 = 1;// 私有变量

	int a2 = 2;// 默认变量

	public int getA1() {
		return a1;
	}// 公有方法

	protected void setA1(int a1) {
		this.a1 = a1;
	}// 保护方法

	public int getA2() {
		return a2;
	}// 公有方法

	protected void setA2(int a2) {
		this.a2 = a2;
	}// 保护方法
}

class B extends A {// 同一包中的类B继承类A
	// 被继承的有:默认类型的a2、protected类型的setA1()、setA2()
	// 和public类型的getA1()、getA2()
	// 不能被继承的是:private类型的a1
	private int b1 = 3;

	protected int getB1() {
		return b1;
	}

	public void setB1(int b1) {
		this.b1 = b1;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?