java中,A a=new B();a表示的是A的对象还是B的对象?为什么要这么表示?如果表示成A a=new A();又会怎样?
4个回答
展开全部
从A a=new B();看,A是B的直接或间接父类,这句栈中是的a是A的引用,堆中的对象是B。
为什么这么写,一个好的编程习惯有几个原则,比如:针对接口编程,而不要针对实现类编程
你这个简单的代码A a=new B();和A a=new A();都是一样的,但是如果是个大的项目,可能并不是直接new,而是通过工厂方法,工厂方法如果返回值是一个具体的对象的话,那么如果一旦工厂方法改变就要改使用工厂方法的类,牵一发而动全身,还可能引进新的bug,而是用超类型,只需要改工厂方法即可,使用工厂方法的地方不需要改
为什么这么写,一个好的编程习惯有几个原则,比如:针对接口编程,而不要针对实现类编程
你这个简单的代码A a=new B();和A a=new A();都是一样的,但是如果是个大的项目,可能并不是直接new,而是通过工厂方法,工厂方法如果返回值是一个具体的对象的话,那么如果一旦工厂方法改变就要改使用工厂方法的类,牵一发而动全身,还可能引进新的bug,而是用超类型,只需要改工厂方法即可,使用工厂方法的地方不需要改
展开全部
A a1 = new B(); a1为B类的对象
A a2 = new A(); a2为A类的对象
例如:public class A
{
public String a()
{
return "A类";
}
}
class B extends A{
public String a()
{
return "B类";
}
}
A a1 = new B();
System.out.println(a1.a());//输出B类中的a()
A a2 = new A();
System.out.println(a2.a());//输出A类中的a()
A a2 = new A(); a2为A类的对象
例如:public class A
{
public String a()
{
return "A类";
}
}
class B extends A{
public String a()
{
return "B类";
}
}
A a1 = new B();
System.out.println(a1.a());//输出B类中的a()
A a2 = new A();
System.out.println(a2.a());//输出A类中的a()
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a表示的是B的对象。new B()是以父类A的形式new一个对象出来。
为什么要这么表示?如果表示成A a=new A();又会怎样?
这就要牵扯Java里的多态了,你将Java多态看懂这个就很容易理解了。
还有什么不理解可以直接百度Hi我.....
为什么要这么表示?如果表示成A a=new A();又会怎样?
这就要牵扯Java里的多态了,你将Java多态看懂这个就很容易理解了。
还有什么不理解可以直接百度Hi我.....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A a=new B();
对象是B的对象,B应该是A的子类或者实现了A接口的类,使用a变量时,对外表现出来的是A,但对象是B。
对象是B的对象,B应该是A的子类或者实现了A接口的类,使用a变量时,对外表现出来的是A,但对象是B。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询