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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© daoyua 中级黑马   /  2014-1-9 10:21  /  1774 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个抽象类的子类中,可以只实现父类父类的一个方法而建立对象么

16 个回复

倒序浏览
不可以的吧,如果子类只覆盖了父类中的部分抽象方法,那么这个子类还是一个抽象类,不能够创建对象调用方法。如果想使用抽象类中的方法,就必须由子类复写其所有的抽象方法以后,建立子类对象来调用。
回复 使用道具 举报
这个不可以,子类继承父类(抽象类),必须复写父类中所有抽象方法。才可以new 对象
抽象类中可有抽象和非抽象方法!但是类里面有抽象方法的类必须是抽象类

接口必须要实现里面的所有方法!

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
不可以,抽象类不可建立对象
回复 使用道具 举报
抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
回复 使用道具 举报
老毕归纳的抽象类特点第四条:只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。

由此可见 你说的情况是不可以的。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
daoyua 中级黑马 2014-1-10 16:32:15
7#
我的意思不是你们说的那个,距离父类有2个抽象方法method1,和method2,第一个子类AZ只实现method1,A虽然还是抽象类,但是A的子类可以只实现method1啊,method2就不用管啦

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
那是不可以的,因为父类有两个抽象的方法,它的子类A的子类(假设为)B依然是父类的子类,所以,如果B只是实现了父类中的一个抽象方法method1,而没有实现方法method2,那么此子类B依然是抽象的,所以此子类B也是没办法建立对象的。下面是程序以及结果,你也可以自己验证一下。
回复 使用道具 举报
abstract class Person
{
        abstract void show();
        abstract void method();
}

abstract class A extends Person
{
        public void show()     //此类中只是实现了抽象父类中的一个方法
        {                      //所以此子类依然是抽象的。
       
                System.out.println("java");
        }
}
class B extends A         //此子类B继承了A。
{
        public void show()
        {
                System.out.println("java////");
        }
}

class AbstractDemo
{
        public static void main(String[] args)
        {
                B b=new B();
                b.show();
               
                //System.out.println("Hello World!");
        }
}
结果你验证一下吧,我这边出了点问题,截图不成的,不好意思啊!!!!

评分

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

查看全部评分

回复 使用道具 举报
嘿嘿,可以哦,我给你发代码
回复 使用道具 举报
abstract class Person
{
         abstract void show();
         abstract void method();
}

abstract class A extends Person
{
         public void show()     //此类中只是实现了抽象父类中的一个方法
         {                      //所以此子类依然是抽象的。
         
                System.out.println("java");
         }
}
class B extends A         //此子类B继承了A。
{
         public void method()
         {
                 System.out.println("java////");
         }
}

class Demo
{
         public static void main(String[] args)
        {
                 B b=new B();
                 b.method();
                 
                //System.out.println("Hello World!");
         }
}

评分

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

查看全部评分

回复 使用道具 举报
可以什么?你的能编译成功吗?
回复 使用道具 举报
可以,如果父类只有一个抽象方法的话,子类复写掉父类仅有的一个抽象方法,子类就变不抽象了,不抽象就可以new对象了。
回复 使用道具 举报
当然行,你看我写的代码,我改了下的
回复 使用道具 举报
嗯我看到了 嗯我验证了一下 可以的 以前没有注意到这个问题  谢谢你啊 自己又掌握了一个知识点 嘿嘿嘿
回复 使用道具 举报
如果你的父类是只有一个抽象方法,那么可以。要不你必须覆盖父类的所有抽象方法才可以创建对象~
回复 使用道具 举报
若是父类只有一个抽象方法,可以只重写这一个方法建立子类对象,若是有多个抽象方法,必须都重写后才能建立对象,否则子类也变成了抽象类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马