我正在尝试使用带有抽象类的构造函数,我能够使用多类中为mul和div抽象方法定义的值,但我想使用构造函数添加中使用的值,即抽象方法添加时的24和4以及sub是在main中调用。 有人可以建议我应该做些什么。
提前致谢。
package repeatPracticeJava;
abstract class addition{
addition(){
this.a=24;
this.b=4;
}
int a,b,c;
String str;
abstract void add();
abstract void sub();
//abstract void mul();
//abstract void div();
}
abstract class multip extends addition{
multip(){
this.a=12;
this.b=3;
}
multip(String str){
this.str="ajay";
this.a=100;
this.b=5;
}
abstract void mul();
abstract void div();
}
public class abstractprat extends multip{
@Override
void mul() {
// TODO Auto-generated method stub
c=a*b;
System.out.println(c);
}
@Override
void div() {
// TODO Auto-generated method stub
c=a/b;
System.out.println(c);
}
@Override
void add() {
// TODO Auto-generated method stub
c=a+b;
System.out.println(c);
}
@Override
void sub() {
// TODO Auto-generated method stub
c=a-b;
System.out.println(c);
}
public static void main(String[] args){
abstractprat obj = new abstractprat();
obj.mul();
obj.div();
obj.add();
obj.sub();
}
}
答案 0 :(得分:0)
您无法使用抽象类添加中的值,因为multip类的构造函数会覆盖其中的变量a和b的值。构造函数层次结构清楚地表明,首先调用最顶层类的构造函数然后调用第二个最顶层的类:如果C扩展B扩展A,那么将首先调用类A的构造函数然后调用类B的构造函数然后调用C类。因此,在你的代码中,类添加的构造函数将它们初始化为24,4但是类multip的构造函数将它们重写为12,3。因此,变量值保持为12,3,并且可以在abstractpart类的所有方法中访问它。如果要从类添加中访问变量值,则在类multip和addition中使用不同的变量。希望这可以解决您的问题,我已根据您的问题中指定的要求编辑了您的代码:
abstract class addition{
int a,b,c;
addition(){
this.a=24;
this.b=4;
}
String str;
abstract void add();
abstract void sub();
}
abstract class multip extends addition{
int a1,b1,c1;
multip(){
this.a1=12;
this.b1=3;
}
multip(String str){
this.str="ajay";
this.a1=100;
this.b1=5;
}
abstract void mul();
abstract void div();
}
public class abstractpart extends multip{
@Override
void mul() {
// TODO Auto-generated method stub
c1=a1*b1;
System.out.println(c1);
}
@Override
void div() {
// TODO Auto-generated method stub
c1=a1/b1;
System.out.println(c1);
}
@Override
void add() {
// TODO Auto-generated method stub
c=a+b;
System.out.println(c);
}
@Override
void sub() {
// TODO Auto-generated method stub
c=a-b;
System.out.println(c);
}
public static void main(String[] args){
Test2 obj = new Test2();
obj.mul();
obj.div();
obj.add();
obj.sub();
}
}