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

📄 abstractmethoddemo.java

📁 java程序设计教程的源码
💻 JAVA
字号:
//【例4-17】  抽象方法与抽象类的关系与应用。
//程序清单4-17:  AbstractMethodDemo.java
package e4_17;
public class AbstractMethodDemo {
	public static void main(String args[]) {
		A obja;// 抽象类A只能用来声明对象引用
		// obja = new A(); //抽象类A不能实例化
		B objb;
		// objb = new B(); //抽象类B不能实例化
		C objc = new C();// 只能用实现了抽象类的子类C实例化
		objc.add(10, 10);
		objc.subtract(10, 1);
		objc.Multiply(10, 10);
		objc.Divide(10, 10);
		// obja是objb和objc的上转型对象,objb是objc的上转型对象
		obja = objb = objc;
		objb.add(100, 100);
		objb.subtract(100, 10);
		objb.Multiply(100, 100);
		// objb.Divide(100, 100);//上转型对象不能调用子类新增成员
		obja.add(1000, 1000);
		obja.subtract(1000, 100);
		// obja.Multiply(1000, 1000);//上转型对象不能调用子类新增成员
	}
}
abstract class A { // 含有抽象方法的类必须定义为抽象类
	abstract void add(int x, int y);// 抽象方法声明add()
	// 抽象方法不能声明为final类型
	abstract void subtract(int x, int y);
}

// 子类B没有完全实现父类A中的抽象方法,则只能定义为抽象类
abstract class B extends A {// 类B继承类A
	// 覆盖抽象类A的方法 void add(int x, int y)
	void add(int x, int y) {
		System.out.println(x + " + " + y + " = " + (x + y));
	}
	void Multiply(int x, int y) {// 子类B新增的方法
		System.out.println(x + " * " + y + " = " + (x * y));
	}
}
// 子类C实现了间接父类A的抽象方法abstract int subtract(int x, int y)
class C extends B {// 类C继承类B
	void subtract(int x, int y) {
		System.out.println(x + " - " + y + " = " + (x - y));
	}
	void Divide(int x, int y) {// 子类C新增的方法
		System.out.println(x + " / " + y + " = " + (x / y));
	}
}

⌨️ 快捷键说明

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