A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨华东 中级黑马   /  2012-10-16 13:01  /  1273 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨华东 于 2012-10-21 20:11 编辑

class A {
   public int method1(int a, int b) {
      System.out.println("我马上就被抽象方法覆盖了");
                                                  }
}
abstract class B extends A
{
public  abstract  int  method1(int a,int b);//子类覆盖父类的方法。。。郁闷啊 这样也算覆盖吗????
}
class Test2
{
public static void main(String[] args)
{
  
}
}

揭迷惑啊。。。。。其大神

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
class A
{
   public void method1(int a, int b)
   {
      System.out.println("我马上就被抽象方法覆盖了");
    }
}
abstract class B extends A
{
public  abstract   void method1(int a,int b);//子类覆盖父类的方法
}
class Test2
{
public static void main(String[] args)
{
//B b=new B();
//System.out.println(b.method1());
}
}
首先你的方法定义都错误了,methond1定于成int类型的方法,必须要有返回值的;
抽象类是无法被实例化的。。。。
抽象类中的方法要是被调用的话,必须被继承并实现,才能进行调用,在Test2中,如果你不对B进行实例话,并调用methond1方法的话,jvm是不会报错的
但是如果你在Test2中对B进行实例化,并调用methond1方法,就不行了,会提示你‘B是抽象的,无法进行实例化’
但是这种继承方法是完全正确的

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 杨华东 于 2012-10-16 18:26 编辑
李贺晓 发表于 2012-10-16 14:14
class A
{
   public void method1(int a, int b)


方法没错啊  那错了??抽象类B作为非抽象A的子类 方法覆盖根本没错!!!
你说的哪个方法必须要有返回值类型的??郁闷
回复 使用道具 举报
class A {
   public int method1(int a, int b) {
      System.out.println("我马上就被抽象方法覆盖了");
                                                  }
}

这个方法不是要返回值吗、、

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
梁世喜 发表于 2012-10-16 18:35
class A {
   public int method1(int a, int b) {
      System.out.println("我马上就被抽象方法覆盖了") ...

给啦。。。不是void嘛   晕
回复 使用道具 举报
杨华东 发表于 2012-10-16 18:23
方法没错啊  那错了??抽象类B作为非抽象A的子类 方法覆盖根本没错!!!
你说的哪个方法必须要有返回值 ...

抽象类B作为非抽象类A的子类,方法覆盖是没错,但是你覆盖的这个方法是没法使用的,讲解抽象方法的时候不是有一个,抽象方法必须被重写后才能使用的啊,而且抽象类不能被实例化的
回复 使用道具 举报
邹海洋 来自手机 中级黑马 2012-10-17 01:20:01
7#
原来抽象类可以继承非抽象类,把一个非抽象方法变为抽象方法,只要参数列表不变,仍然是覆盖。学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马