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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余威宏 中级黑马   /  2013-5-7 21:00  /  2272 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余威宏 于 2013-5-8 12:42 编辑

  抽象类应该怎么理解呢,它在java中有什么好处呀?
还有个问题是,在java中,类,抽象类,还有接口,它们之间有什么区别,有什么样的联系呢?

评分

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

查看全部评分

15 个回复

倒序浏览
对于这个问题,我只想说一句,楼主麻烦加我QQ。525968394,我和你彻夜长谈!
回复 使用道具 举报
抽象类与接口的区别:
抽象类只能继承一个类,接口可以实现多个,抽象类不可以。
抽象类可以实例方法,接口不能有实例方法。
回复 使用道具 举报
顶一个  这个问题确实可以长谈
回复 使用道具 举报
类包括抽象类,抽象就是不具体的意思。抽象类不能实例化,要被继承才可以用里面的方法。抽象类里面不一定有抽象方法,但是接口一定有抽象方法。当抽象类里面的方法全是抽象方法时,就定义成接口。接口是被实现的,当子类实现时,里面的抽象方法要全部重写。接口可以多实现,类只能单继承。

评分

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

查看全部评分

回复 使用道具 举报
不同子类继承同一个父类时,父类的某些方法需要在子类中写成不同的形式,就需要父类用到抽象类。例如动物都有叫的方法,但是不同动物叫的方法不一样,那动物这个叫的方法就是抽象的,动物这个类就需要定义成抽象类。

类:里面包含方法和变量。
抽象类:抽象类中可以有抽象的方法,也可以有普通方法和变量。
接口:接口中都是需要子类去实现的抽象方法和不可改变的常量。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 翟宝海 于 2013-5-7 22:11 编辑

含有抽象方法(一个或一个以上)的类就是抽象类,它不可以生成对象,在Java中用于被继承。继承抽象类的子类要想实例化,就必须为父类中所有的抽象方法提供具体方法体。
接口可以说是抽象类的一个变体,它完全禁止了所有的方法定义。接口的出现,弥补了java中类只能单继承的缺陷,进一步加强了面向对象的能力。
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型,实际上就是全局常量。

接口和抽象类的区别.jpg (20.89 KB, 下载次数: 0)

接口和抽象类的区别.jpg

评分

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

查看全部评分

回复 使用道具 举报
一个类可以有多个接口 只能有继承一个父类抽象类可以有构造方法,接口中不能有构造方法。抽象类中可以有普通成员变量,接口中没有普通成员变量接口里边全部方法都必须是abstract的 抽象类的可以有实现了的方法抽象类中的抽象方法的访问类型可以是public,protected   但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型抽象类中可以包含静态方法,接口中不能包含静态方法抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

评分

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

查看全部评分

回复 使用道具 举报
类就是对事物的描述。
抽象类:当多个类中出现相同功能,但是功能主体不同,这是可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。
抽象类的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

有一些关键字不可以和abstract共存,例如
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。

接口:当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
还有就是,class用于定义类,interface 用于定义接口。接口:是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类。

评分

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

查看全部评分

回复 使用道具 举报
  分享你一篇关于Java中抽象类和接口的区别
地址Java中抽象类和接口的区别
回复 使用道具 举报
http://www.soft6.com/tech/11/119126.html
回复 使用道具 举报
。。。。我压缩给你吧。。。不会玩论坛。网址发不了

Java中抽象类和接口的区别.zip

3.97 KB, 下载次数: 19

评分

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

查看全部评分

回复 使用道具 举报
。。。。我压缩给你吧。。。不会玩论坛。网址发不了
回复 使用道具 举报


Abstract:抽象的:

1.用abstract 关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。

2.含有抽象方法的类必须被声明抽象类,抽象类必须被继承,抽象方法必须被重写。

3.抽象类不能被实例化

4.抽象方法只需声明,而不需事先

什么时候用抽取:

当多个类可能出现相同功能,但功能主体不同,这时可以向上进行抽取。这时,只抽取功能定义,而不抽取功能主体。

方法带分号不带大括号 是抽象方法  

举例:

abstract class Animal//定义抽象类

{

    abstract void name();//定义抽象方法

   

}

class cat extends Animal

{

   public void name()//重写名字

    {

System.out.println("这是猫");

    }

}

class dog extends Animal

{

   void name()//重写

    {

System.out.println("这是狗");

    }

}

public class AbstractDemo

{

    public static void main(String[] args)

    {

new cat().name();

new dog().name();

    }

}
我写的日志你看下把  能不能理解

评分

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

查看全部评分

回复 使用道具 举报
嗯,好的明白了,很感谢大家的帮忙哈。
回复 使用道具 举报
这里面是抽象类的总结,你看一下就懂得了。

http://bbs.itheima.com/thread-49112-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马