精华内容
下载资源
问答
  • java抽象类和普通类的区别 1.抽象类不能被实例化。 2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。 3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体...

     

    java抽象类和普通类的区别

    1.抽象类不能被实例化。

    2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。

    3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体

    4.含有抽象方法的类必须申明为抽象类

    5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类。

    抽象类和接口的区别

     Abstract ClassInterface
    实例化不能不能
    继承关系,一个类只能继承一个类一个类可以实现多个接口
    数据成员(变量)和类一样可以有自己的一般没有,只可以时public static final修饰的
    方法可以有私有方法,非abstract方法必须实现

    只有abstract方法

    实现extendsimplements
    表示关系is - alike - a

     

    抽象类也是类

    final不可修饰抽象类和抽象方法和接口

    private修饰的方法不可被覆盖,默认被final修饰

    展开全文
  • 标签: java抽象类概念理解抽象类与接口区别抽象类与普通类区别 2017-05-04 16:26 1029人阅读 评论(0) 收藏 举报  分类: Java(17)  版权声明:本文为博主csdn_aiyang原创文章,未经博主...
     

    Java 抽象类和普通类、接口的区别——看完你就顿悟了

    标签: java抽象类概念理解抽象类与接口区别抽象类与普通类区别
      1029人阅读  评论(0)  收藏  举报
      分类:

    目录(?)[+]

    概念:

    抽象性和具体性都是相对的,不是绝对的。简单说,概念的内涵越小,则其抽象程度就越高,其外延也越大,反之亦然。比如“人”比“男人”抽象一点,而“生物”又比“人”更抽象一点,“物质”则比“生物”更抽象。
    抽象的概念是由具体概念依其“共性”而产生的,把具体概念的诸多个性排出,集中描述其共性,就会产生一个抽象性的概念。抽象思维,是人类思维达到高级阶段产生的一种能力,例如,当小孩子思维尚未成熟时,他们只能掌握具体概念,他们在学习代词“你、我、他”时往往遇到困难,因为代词具有较高的抽象性。
    总之,抽象概念的外延大,内涵小,具体概念的外延小,内涵大。

    一、抽象类与普通类的区别:

    1、普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而不非具体。

     2、普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自类也是抽象类。

    看一个实例:

    [java]  view plain  copy
    1. public class Pet {  
    2.   
    3. public void play(){                //这是宠物类,普通父类,方法里是空的  
    4. }  
    5. }  
    6. --------------------------  
    7. public class Cat extends Pet {    //这是子类,是一个猫类,重写了父类方法  
    8. public void play(){  
    9.   System.out.println("猫爬树");  
    10. }  
    11. }  
    12. ------------------------  
    13. public class Dog extends Pet {    //这是子类,是一个狗类,重写了父类方法  
    14.   public void play(){  
    15.   System.out.println("狗啃骨头");  
    16.  }  
    17. }  
    18. -------------------------  
    19. public class Test {  
    20. public static void main(String[] args) {  //这是测试类,分别调用了子类的不同方法  
    21.   
    22. Pet p1=new Dog();                               //多典型的多态表现啊,相当的给力  
    23. Pet p2=new Cat();  
    24.   
    25. p1.play();  
    26. p2.play();  
    27. }  
    28. }  
    -----------------------
    输出结果:
    狗啃骨头
    猫爬树
    -----------------------
    问题:把父类改成抽象类,方法改成抽象方法,那么
    public void play();//抽象方法没方法体
    子类不变,依然重写父类方法,那这个跟普通父类没区别啊?
    难道说就一个抽象方法没方法体就完事了??那我普通方法有方法体,我空着不写内容不就得了,不跟抽象方法一个样吗??
    别跟我说抽象类还不能实例化,哥也不需要去new它!
    普通类都能搞定的,还弄个抽象类有什么意义?我前面都说了普通类的方法我可以空着不写,达到跟抽象类方法没方法体一样的效果。
    既然两种方式都能达到同一个输出效果,弄一种方式不就得了,那为什么还要创造出一个抽象类出来?难道是比普通类看着舒服?用着爽?还是更加便捷?还是为了强制让别人用的时候必须强制化实现抽象方法省的你忘了什么的?

    答:就是为了强制不能实例化,以及强制子类必须实现方法这不是你忘不忘的问题
    你说你不去new它就行了,这话没错
    那你想另一个问题,为什么要有访问控制呢?为什么要有private和public之分呢?
    我可以全部public,不该访问的,我不访问就行了啊
    小程序里,看不出什么区别,反而private成员要写一堆set和get函数,多麻烦,我自己写小程序的时候也会偷懒全部public
    但是项目大了,代码多了,这种严谨的结构就很重要了
    且不说会有很多人合作一起写一个程序,哪怕还是你一个人写,也保不住有忘记的时候,那时候编译器不报错,茫茫码海上哪找错误去
    面向对象说到底就是方便你思考,模块化,易维护管理,硬要说没必要,整个面向对象都没必要了,C语言有什么干不了的呀,运行效率还高。

    二、抽象类与接口的区别:

    1、概念不一样。接口是对动作的抽象,抽象类是对本质的抽象。
    抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它。
    所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

    2、使用不一样:

     a.抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
    b.抽象类可以有具体的方法 和属性,  接口只能有抽象方法和不可变常量
    c.抽象类主要用来抽象类别,接口主要用来抽象功能.
    d.抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

     e.接口是设计的结果 ,抽象类是重构的结果

    3、使用方向:当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。
    注意:抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

    展开全文
  • java抽象类和普通类的区别

    千次阅读 2019-04-25 18:03:27
    3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体 4.含有抽象方法的类必须申明为抽象类 5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类抽象类是否可以有构造函数?答案是...

    1.抽象类不能被实例化。

    2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。

    3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体

    4.含有抽象方法的类必须申明为抽象类

    5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类。

    抽象类是否可以有构造函数?答案是可以有。抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。不仅如此,抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码

    展开全文
  • JAVA抽象类和普通类、接口的区别

    千次阅读 2019-04-11 18:30:48
        抽象类和具体类是相对的概念。“抽象”是一种存在思想逻辑中的概念,而‘具体’是一种可见可触摸的现实对象。简单说,比如“人”比“男人”抽象一点,“动物”又比“人”更抽象一点,而“生物”又比“动物”...

    概念:

        抽象类和具体类是相对的概念。“抽象”是一种存在思想逻辑中的概念,而‘具体’是一种可见可触摸的现实对象。简单说,比如“人”比“男人”抽象一点,“动物”又比“人”更抽象一点,而“生物”又比“动物”更抽象。
        抽象的概念是由具体概念依其“共性”而产生的,把具体概念的诸多个性排除,集中描述其共性,就会产生一个抽象性的概念。抽象思维,是人类思维达到高级阶段产生的一种能力,例如,当小孩子思维尚未成熟时,他们只能掌握具体概念,他们在学习代词“你、我、他”时往往遇到困难,因为代词具有较高的抽象性。
        总之,抽象概念的外延大,内涵小,具体概念的外延小,内涵大。

    抽象类与普通类的区别

    • 普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而并非具体。
    • 普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写父类抽象的方法,除非子类也是抽象类。
    public class Pet {
    
    public void play(){                //这是宠物类,普通父类,方法里是空的
    }
    }
    --------------------------
    public class Cat extends Pet {    //这是子类,是一个猫类,重写了父类方法
    public void play(){
      System.out.println("1、猫爬树");
    }
    }
    ------------------------
    public class Dog extends Pet {    //这是子类,是一个狗类,重写了父类方法
      public void play(){
      System.out.println("2、狗啃骨头");
     }
    }
    -------------------------
    public class Test {
    public static void main(String[] args) {  //这是测试类,分别调用了子类的不同方法
    
    Pet p1=new Cat();                               //多典型的多态表现啊,相当的给力
    Pet p2=new Dog();
    
    p1.play();
    p2.play();
    }
    }
    
    -----------------------
    输出结果:
    1、猫爬树
    2、狗啃骨头
    -----------------------
    

    问:把父类改成抽象类,方法改成抽象方法,那么public void play(); 子类不变,依然重写父类方法,那这个跟普通父类没区别啊?难道说就一个抽象方法没方法体就完事了??那我普通方法有方法体,我空着不写内容不就得了,不跟抽象方法一个样吗??别跟我说抽象类还不能实例化,哥也不需要去new它!普通类都能搞定的,还弄个抽象类有什么意义?我前面都说了普通类的方法我可以空着不写,达到跟抽象类方法没方法体一样的效果。既然两种方式都能达到同一个输出效果,弄一种方式不就得了,那为什么还要创造出一个抽象类出来?难道是比普通类看着舒服?用着爽?还是更加便捷?还是为了强制让别人用的时候必须强制化实现抽象方法省的你忘了什么的?

    答:就是为了强制不能实例化,以及强制子类必须实现方法。这不是你忘不忘的问题,你说你不去new它就行了,这话没错
    那你想另一个问题,为什么要有访问控制呢?为什么要有private和public之分呢?
    我可以全部public,不该访问的,我不访问就行了啊?
    小程序里,看不出什么区别,反而private成员要写一堆set和get函数,多麻烦,我自己写小程序的时候也会偷懒全部public,
    但是项目大了,代码多了,这种严谨的结构就很重要了。
    且不说会有很多人合作一起写一个程序,哪怕还是你一个人写,也保不住有忘记的时候,那时候编译器不报错,茫茫码海上哪找错误去面向对象说到底就是方便你思考,易扩展、易维护管理,硬要说没必要,整个面向对象都没必要了,C语言有什么干不了的呀,运行效率还高。

    抽象类与接口

    • 概念不一样。接口是对动作的抽象,抽象类是对本质的抽象。

        抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人和女人,他们的抽象类是人类,而猫和狗的抽象类是宠物类。人类可以吃东西,宠物类也可以吃东西,但是两者不能混为一谈,因为有本质的区别。这个“吃东西”是一个动作,你可以吧“吃东西”定义成一个接口,然后让两个类去实现它的方法。
        所以,在高级语言上,一个类只能继承一个类或抽象类,正如人不可能同时是动物类又是植物类,但是可以实现多个接口,例如,吃饭接口、呼吸接口等。

    • 使用情况:
      a.抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高;
      b.抽象类可以有具体的方法和属性,接口只能由抽象方法和不可变常量;
      c.抽象类主要用来抽象类别,接口主要用来抽象功能;
      d.抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有的方法都必须是未实现的;
      e.接口是设计的结果,抽象类是重构的结果。
    • 使用方向
      当你关注一个事物本质的时候,用抽象类;
      当你关注一个操作的时候,用接口。

    小结

        抽象类的功能要远超接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

    展开全文
  • Java抽象类 详解

    万次阅读 多人点赞 2016-10-05 00:06:35
    一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。...
  • 一、抽象类普通类 二、抽象类与接口 三、小结 概念 抽象类和具体类是相对的概念。“抽象”是一种存在思想逻辑中的概念,而“具体”是一种可见可触摸的现实对象。简单说,比如“人”比“男人”抽象一点,...
  • JAVA抽象类和接口

    千次阅读 2021-06-14 21:08:49
    抽象方法,只声明而未实现的方法我们称为抽象方法,所有的抽象方法都需要用abstract关键字声明,包含抽象方法的类也需要使用abstract关键字声明,抽象类和普通类相比,区别在于抽象类带有抽象方法,抽象方法可以只...
  • Java 抽象类和接口

    千次阅读 2018-12-04 21:45:27
    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,但可以定义一个引用。抽象类必须被继承,才能被使用。 父类包含了子类...
  • Java 抽象类

    千次阅读 多人点赞 2019-01-28 09:16:52
    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段...
  • Java 普通类和抽象类有哪些区别?

    千次阅读 2019-07-24 19:01:42
    说一下个人的见解吧,我的见解不一定全对。(这个问题在前面的博客就被证实了,不过存在的错误被指出来以后我都修正了。...3.抽象类不能被实例化,必须通过其非抽象子类(就是这个抽象类的子类,但是这个子类不能是...
  • Java 抽象类和接口的详解

    千次阅读 2021-06-15 13:32:26
    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法构造方法的访问方式和普通类一样。 ③抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。 ④抽象类中的抽象方法只是声
  • java抽象类和接口有什么意义

    千次阅读 2021-02-04 16:53:06
    为什么接口和抽象类不能实例化,为什么接口可以多个实现而抽象类只能单继承,特别是java8之后,抽象类和接口里面都可以写代码后,就更加分不清了,今天重新整理一下。 什么是抽象类(abstract class) 使用abstract...
  • java抽象类

    万次阅读 多人点赞 2019-05-13 21:39:28
    下面小编给大家讲一个java抽象类,在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类...
  • Java抽象类和抽象方法详解

    千次阅读 2018-02-24 02:03:51
    Java抽象类和抽象方法详解一 . 由来 当编写一个类时,常常会给这个类定义一些方法来描述这个类的行为方式,通常这些方法都有相应的具体的方法体,但是,在某些情况下,某个基类只是知道其子类应该包含怎样的方法,...
  • 新手小白学JAVA 抽象类

    万次阅读 多人点赞 2021-05-11 11:01:52
    Java中可以定义被abstract关键字修饰的类,被abstract关键字修饰的类叫做抽象类 如果一个类含有抽象方法,那么它一定是抽象类 抽象类中的方法实现交给子类来完成 3.2 抽象方法的格式 权限修饰符 abstract 返回值类型 ...
  • Java抽象类AnimalCat

    千次阅读 2018-11-09 13:58:31
    Java抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不...
  • Java抽象类和接口

    千次阅读 2016-09-20 13:58:18
    抽象方法必须存在与抽象类当中,只要一个类里定义了抽象方法,那么这个类必须得变成抽象类 子类必须实现继承自父类的所有抽象方法,如果子类不想实现,那么它得继续将自己变成抽象类,让抽象方法继续往下传,等待...
  • 今天来讲一讲Java中抽象类和接口的区别。类是对象的模板,抽象类和接口都可以看作是实现类的模板。由于从某种角度来看,接口是特殊的抽象类。它们的渊源颇深,有很大的相识之处,所以在选择使用谁的问题上很容易迷糊...
  • 一起来搞明白JAVA抽象类和接口

    千次阅读 多人点赞 2018-01-04 14:40:33
    今天我来说说自己关于JAVA抽象类和接口。 抽象类: 定义:有abstract修饰的类,我们称之为抽象类 如: abstract class Test{}; 。  方法:抽象类可以有具体方法和抽象方法 。 抽象方法如: abstract void ...
  • java抽象类详解

    千次阅读 2018-06-27 10:55:13
    1、Java抽象类存在的意义,为什么要使用抽象类? 利于代码的维护复用。把相同的方法或者属性抽象出来放在一个抽象类中,让类去继承,则实现了复用。 2、什么是抽象类? 加上abstract关键字的类即为抽象类。 3、...
  • Java抽象类

    2021-06-13 14:38:10
    Java抽象类 1. 抽象类:相比较普通类,抽象类是指在普通类的结构里面增加抽象方法的组成部分, 普通类是可以包含构造方法、普通方法、static方法、常量变量等内容。 2. 抽象方法:抽象方法是指没有方法体的方法...
  • 抽象类和普通类有什么区别

    千次阅读 2020-08-08 16:18:41
    抽象类和普通类有什么区别 声明方式不同 抽象类不能被实例化 抽象类中既可以含有抽象方法也可以含有普通方法,普通类中不能含有抽象方法,含有抽象方法的类都是抽象类 抽象方法不能声明为静态 ...
  • java 抽象类

    千次阅读 2020-02-07 10:40:58
    1.java抽象类的基本概念 普通类就是完善的功能类,直接生产对象并使用,其中的方法都已经实现完整(带有方法体"{}").抽象类的最大特点包含了抽象方法,抽象方法是只声明(没有方法体)的方法,抽象方法定义时使用abstract...
  • java抽象类和接口

    千次阅读 2019-05-14 17:34:15
    java抽象类和接口 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:MyEclipse10 作者:朱海恩 撰写时间: 2019.04.30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • PAGE 3 教 案 单元内容 抽象类 单元序号 15 单元课时 4 教学手段 多媒体教学 教学方法 讲授法 教学课型 理论 实训 教学目标 能力目标 理解抽象类的意义和概念 掌握抽象类的定义 理解抽象类和普通类的区别 知识目标 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 157,055
精华内容 62,822
关键字:

java抽象类和普通类

java 订阅