何时使用特定或抽象引用类型?
When to use a specific or abstract reference type?
我仍然对什么引用类型 does/when 使用哪个引用感到困惑。假设几何对象是一个抽象 class,而圆 class 是一个扩展 GeometricObject 的子class。这两行之间有什么区别?什么时候一个比另一个更受欢迎?
GeometricObject circle1 = new Circle();
Circle circle2 = new Circle();
Here is a example to better understand :
几何对象抽象class:-
public abstract class GeometricObject {
int answer;
public void addition(int x, int y){
answer=x+y;
System.out.println("The sum is :"+answer);
}
public void substraction(int x,int y){
answer=x-y;
System.out.println("The difference is :"+answer);
}
}
圈子class:
public class Circle extends GeometricObject {
int answer;
public void multiplication(int x, int y) {
answer = x * y;
System.out.println("The product is :" + answer);
}
public static void main(String arg[]) {
int a = 11, b = 8;
GeometricObject circle1 = new Circle();
circle1.addition(a, b);
circle1.substraction(a, b);
// circle1.multiplication(a, b); cannnot call the method. Its undifined for the GeometricObject
Circle circle2 = new Circle();
circle2.addition(a, b);
circle2.substraction(a, b);
circle2.multiplication(a, b);
}
}
Superclass引用变量可以保存subclass对象,但是使用那个变量你只能访问superclass的成员,所以要访问superclass的成员class 建议始终为子 class.
创建引用变量
注意:子class继承其父class的所有成员(字段、方法和嵌套classes) .构造函数不是成员,所以不被subclass继承,但是superclass的构造函数可以从subclass.
调用
(很抱歉没有根据 class 定义使用确切的方法 :))
我仍然对什么引用类型 does/when 使用哪个引用感到困惑。假设几何对象是一个抽象 class,而圆 class 是一个扩展 GeometricObject 的子class。这两行之间有什么区别?什么时候一个比另一个更受欢迎?
GeometricObject circle1 = new Circle();
Circle circle2 = new Circle();
Here is a example to better understand :
几何对象抽象class:-
public abstract class GeometricObject {
int answer;
public void addition(int x, int y){
answer=x+y;
System.out.println("The sum is :"+answer);
}
public void substraction(int x,int y){
answer=x-y;
System.out.println("The difference is :"+answer);
}
}
圈子class:
public class Circle extends GeometricObject {
int answer;
public void multiplication(int x, int y) {
answer = x * y;
System.out.println("The product is :" + answer);
}
public static void main(String arg[]) {
int a = 11, b = 8;
GeometricObject circle1 = new Circle();
circle1.addition(a, b);
circle1.substraction(a, b);
// circle1.multiplication(a, b); cannnot call the method. Its undifined for the GeometricObject
Circle circle2 = new Circle();
circle2.addition(a, b);
circle2.substraction(a, b);
circle2.multiplication(a, b);
}
}
Superclass引用变量可以保存subclass对象,但是使用那个变量你只能访问superclass的成员,所以要访问superclass的成员class 建议始终为子 class.
创建引用变量注意:子class继承其父class的所有成员(字段、方法和嵌套classes) .构造函数不是成员,所以不被subclass继承,但是superclass的构造函数可以从subclass.
调用(很抱歉没有根据 class 定义使用确切的方法 :))