Java 将抽象与构造函数结合使用
我正在尝试将构造函数用于抽象类,我能够使用mult类中为mul和div抽象方法定义的值,但我想使用构造函数加法中使用的值,即在main中调用抽象方法add和sub时使用24和4。 有人能建议我该怎么做吗 提前谢谢Java 将抽象与构造函数结合使用,java,Java,我正在尝试将构造函数用于抽象类,我能够使用mult类中为mul和div抽象方法定义的值,但我想使用构造函数加法中使用的值,即在main中调用抽象方法add和sub时使用24和4。 有人能建议我该怎么做吗 提前谢谢 package repeatPracticeJava; abstract class addition{ addition(){ this.a=24; this.b=4; } int a,b,c; String st
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();
}
}
您无法在抽象类添加中使用这些值,因为multip类的构造函数正在覆盖其中变量a和b的值。构造函数层次结构清楚地表明,首先调用最顶层类的构造函数,然后调用第二个最顶层类的构造函数。例如:如果C扩展了B扩展了A,那么将首先调用A类的构造函数,然后调用B类的构造函数,然后调用C类的构造函数。因此,在代码中,类addition的构造函数将它们初始化为24,4,而类multi的构造函数将它们重写为12,3。因此,变量值保持为12,3,并且在abstractpart类的所有方法中都可以访问它。如果要从类加法访问变量值,则在类multi和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();
}
}