新人求解答

henry_pan 2014-01-01 11:13:37

public class A {
protected void add(int i){
System.out.println("添加成功!");
}
protected void delete(int i){
System.out.println("删除成功!");
}

}

public class B extends A{
public void update(){
System.out.println("修改成功!");
}

public static void main(String[] args) {
A a=new A();
A a2=new B();
B b=new B();


}

}


请问a和a2有什么不同呢?都只能调用父类方法?b都可以调用?
...全文
422 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyouwys 2014-02-08
  • 打赏
  • 举报
回复
new后面的才是 变量真实的被实例化的类型,=号前面的是声明这个变量的类型(当然必须有继承和实现关系),也就是说 a 是A类的实例 a2是B类的实例,但a2被声明成A类所以可以通过强制类型转换调用A的子类也就是B类定义的方法
bbjiabcd 2014-02-07
  • 打赏
  • 举报
回复
引用 5 楼 henry_pan 的回复:
[quote=引用 4 楼 zawa 的回复:] a是A 的实例 a2是B的实例 但是他向上转型(upcase)为基类A。
再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?[/quote] 原则上是这样,但是你可以在自己的类中重写这两个方法,使其不符合这个原则,但不建议这样。
bbjiabcd 2014-02-07
  • 打赏
  • 举报
回复
a与a2的区别在于(B)a2能成功,并且能够((B)a2).update(),而(B)a则会报错
coolbamboo2008 2014-01-24
  • 打赏
  • 举报
回复
在运行的时候,a2调用的是B中的方法。当然,你这个例子中,B中没有overrideA中的方法,不然更容易看出来
love_YYH 2014-01-23
  • 打赏
  • 举报
回复
a是A的实例,a2是父类A的实例,但是用子类的实例为其赋值,在java里面有这种存在,术语是什么就记不清了,
alexwu59 2014-01-17
  • 打赏
  • 举报
回复
a1是 A的实例,a2是B的实例,虽然他们都是保存在了A类型,但是a2可以通过 B t = (B)a2可以强转为B,这样就可以访问A和B的所有公有方法,但是a却不能强转。
小宇爱编程 2014-01-17
  • 打赏
  • 举报
回复
a是A的实例,a只可以调用A类的方法。a2是B的实例,既可以调用a的方法也可以调用b的方法。 只有hashcode()方法值相同时,才比较equals()方法。
Fashiontao 2014-01-17
  • 打赏
  • 举报
回复
a是A的实例,a2是B的实例,但引用类型是A,在继承中记住一句话方法动态绑定到引用对象类型!
丙文q 2014-01-02
  • 打赏
  • 举报
回复
引用 5 楼 henry_pan 的回复:
[quote=引用 4 楼 zawa 的回复:] a是A 的实例 a2是B的实例 但是他向上转型(upcase)为基类A。
再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?[/quote] 我那个回答好像有点不对。equals相同 hashcode可以不相同的 假如你重写了equals方法但是没有重写hashcode方法,也不报错,只是不规范,所以还是不要把话说死了。 你的那个说法在集合中是正确的
解药解药 2014-01-01
  • 打赏
  • 举报
回复
a是A 的实例 a2是B的实例 但是他向上转型(upcase)为基类A。
henry_pan 2014-01-01
  • 打赏
  • 举报
回复
引用 2 楼 zawa 的回复:
继承的作用之一就是子类自动的得到父类的属性和方法。上面的程序b是可以调用父类的方法的。private方法除外。
那请问a,a2的区别是什么啊?
解药解药 2014-01-01
  • 打赏
  • 举报
回复
继承的作用之一就是子类自动的得到父类的属性和方法。上面的程序b是可以调用父类的方法的。private方法除外。
henry_pan 2014-01-01
  • 打赏
  • 举报
回复
顺便说说继承直接怎么调用的?父类子类之间能如何调用?
  • 打赏
  • 举报
回复
a是A的实例,a2是B的实例。其实equals和hashCode都可以自己改写,他们当然可以不同但是java规范制定他们必须相同
丙文q 2014-01-01
  • 打赏
  • 举报
回复
引用 5 楼 henry_pan 的回复:
[quote=引用 4 楼 zawa 的回复:] a是A 的实例 a2是B的实例 但是他向上转型(upcase)为基类A。
再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?[/quote] 你说的很对
henry_pan 2014-01-01
  • 打赏
  • 举报
回复
引用 4 楼 zawa 的回复:
a是A 的实例 a2是B的实例 但是他向上转型(upcase)为基类A。
再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧