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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiahuiting 中级黑马   /  2013-9-24 16:30  /  2236 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jiahuiting 于 2013-9-24 21:30 编辑

假设在抽象类中有若干个抽象方法和非抽象方法如果        我想用其中的 非抽象方法,继承后可以直接用么

如果

    我想用其中的某个抽象方法,我需要复写全部的抽象方法后才能用么

评分

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

查看全部评分

8 个回复

倒序浏览
一个子类继承了抽象类,也就继承了抽象类中的所有抽象,非抽象方法,一个实例化对象不能有抽象方法,
所以子类要实例化,必须复写所有抽象方法;非抽象方法,可以直接调用;

评分

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

查看全部评分

回复 使用道具 举报
抽象类的特点:
1,抽象方法一定定义在抽象类中。
2,抽象方法抽象类都必须被abstract关键字修饰
3,抽象类不可以用new创建对象。调用抽象方法没有意义
4,抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该类还是一个抽象类。

抽象类和一般类没有太大的不同。
该如何描述事物还如何描述,只是该事物出现一些看不懂的东西。这些不确定的部分
也是该事物的功能需要确定出来但是无法定义主体因此用abstract修饰。
抽象类比一般类多了抽象函数,就是在类中可以定义抽象方法。
抽象类不可以实例化即不能创建对象 不能new。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
抽象类中的飞抽象方法可以直接继承使用的

评分

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

查看全部评分

回复 使用道具 举报
假设在抽象类中有若干个抽象方法和非抽象方法如果        我想用其中的 非抽象方法,继承后可以直接用么
子类继承了抽象类,抽象类中的非抽象方法,子类对象可以直接调用。

我想用其中的某个抽象方法,我需要复写全部的抽象方法后才能用么
   如果你只使用一个父类的抽象方法,也要全部复写。因为如果不全部复写,那么子类也就必须是抽象类,不能够创建对象。

评分

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

查看全部评分

回复 使用道具 举报
如果问题已经解决,请重新编辑帖子,修改帖子的主题分类为“已解决”{:soso_e181:}
回复 使用道具 举报
抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract.

  在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract.

  抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。抽象类本身不具备实际的功能,只能用于派生其子类。抽象类中可以包含构造方法,但是构造方法不能被声明为抽象。

  调用抽象类中的方法(抽象方法和非抽象方法),如果方法是static的,直接 抽象类。方法  就可以了;如果是非static的则必须需要一个继承的非抽象类,然后用这个非抽象类的实例来调用方法。

  抽象类可以实现接口,接口中的方法 在抽象类中可以不实现,当有子类继承 抽象类时,并且子类不是抽象类时,子类需要将抽象类中的 抽象方法和接口中的方法都实现

  抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。

回复 使用道具 举报
雪人 中级黑马 2013-9-24 19:50:14
7#
如果你的类不是抽象类, 你要是继承它, 你就得重新写它里面的抽象方法.
回复 使用道具 举报
从面向对象设计的角度来说,抽象类与抽象方法,接口都是必不可少的内容,正是这些概念以及实际运用,够成了java面向对象的核心与强大,抽象类,方法是和多态密不可分的设计范式....

何为多态?简单的说就是一类事物的多种形态,基本类型有多种形态(类型自动转换),方法有多种形态(重载:同名不同参),引用类型的多态则相对复杂,比如说,一个描述人类的类,里面有个方法叫说话,不同语言的人说出来是不一样的,中国人说汉语,外国人说我听不懂的鸟语...在人类这个类中怎么实现说话呢?可想而知是不现实的,最好的方法就是把这个说话的方法设计成抽象方法,不提供具体实现,让继承人类的子类去重写(重写:同名,同参,同返回,范围不能变小,异常不能变大)这个方法...

何为抽象类?抽象类是从其他若干个具有相同属性与行为的类中进一步抽象出来的类,可以设计方法,属性,如果把类设计为抽象类,那么这个类是不能被实例化的,只能被继承的子类(子类也可以为抽象类,也可以不是)间接使用,抽象类有构造,是一个完整的类,抽象类中可以包含抽象方法,也可以不含,那么问题来了,既然把类设计成抽象,肯定是用于设计多态用的,一般都会包含抽象方法:

子类继承了抽象类,如果抽象类中含有抽象方法,那么子类也继承了抽象方法,包含抽象方法的类必须是抽象类,不然子类就必须重写抽象方法,就是提供具体实现,完成多态,



下面3条原则保证了抽象方法必须重写:

1、必须用public abstract修饰抽象方法,private ,static 都不能用于修饰

2、包含抽象方法的类必须是抽象类

3、抽象类可以不含抽象方法


还有就是在GUI编程的那里,关于事件的监听,楼主可以去看看,了解了解,了解一下那种设计模式,相信你可以得到你想要的答案哦!


希望可以帮到楼主、、、


The you smile until forever 、、、、、、、、、、、、、、、、、、、、、
回复 使用道具 举报
抽象类中非抽象方法:
1)final修饰的方法不能重写.
2)子类不能继承的,就不是重写.
3)其它的都可重写.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马