⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uptransferobjecttype.java

📁 java程序设计教程的源码
💻 JAVA
字号:
//【例4-11】  上转型对象的使用。
//程序清单4-11:  UpTransferObjectType.java
package e4_11;

public class UpTransferObjectType {
	public static void main(String args[]) {
		A obja;// 声明类A的对象引用变量obja
		B objb;// 声明类B的对象引用变量objb
		obja = new B();// 对象obja为子类B对象的上转型对象
		// 不论父类中的成员变量被子类隐藏与否,上转型对象始终访问父类中的成员变量(包括被隐藏的变量)
		System.out.print("上 转 型对象obja:\n" + "a1 = " + obja.a1 + "\t" + "a2 = "
				+ obja.a2 + "\t");
		// 若父类中的方法没被子类重写,则上转型对象访问的方法是原父类中的方法
		obja.arithmeticOperation(10, 10);
		// 若父类中的方法被子类重写,则上转型对象访问的方法必定是子类中重写的方法
		obja.fatherMethod();
		// 上转型对象不能访问子类中新增的成员变量和成员方法
		// System.out.println(obja.c1);
		objb = (B) obja;// 将上转型对象强制转换为子类对象
		// 若父类中的成员变量被子类隐藏,则子类对象必定访问子类中重新定义的成员变量
		System.out.print("\n强制转换对象objb:\n" + "a1 = " + objb.a1 + "\t" + "a2 = "
				+ objb.a2 + "\t");
		// 子类对象调用继承自父类的方法
		objb.arithmeticOperation(10, 10);
		// 子类对象调用重写的方法
		objb.fatherMethod();
		// 子类对象调用新增的成员变量
		System.out.println("c1 = " + objb.c1);//
	}
}

class A {// 类A
	int a1 = 10;

	int a2 = 100;

	public void arithmeticOperation(int x, int y) {
		System.out.println("x + y = " + (x + y));
	}

	public void fatherMethod() {
		System.out.println("调用父类A的方法:fatherMethod()");
	}
}

class B extends A {// 类B继类A
	// 继承了父类的成员变量a1和成员方法arithmeticOperation()
	int a2 = 1000;// 隐藏(重写)父类的成员变量

	int c1 = 10000;// 子类新增的成员变量

	public void fatherMethod() {// 重写父类中的成员方法
		System.out.println("调用子类B的方法:fatherMethod()");
	}
}

⌨️ 快捷键说明

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