抽象类:abstract
抽象:没有足够的描述功能,事物不具体的描述,却又有共性。

特点:
  1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中,该类也必须被abstract修饰。
  2,抽象类不能被实例化。
  3,抽象类必须有其子类覆盖所有的抽象方法后,该子类才可以实例化,否则该子类还是抽象类。

抽象类细节常见问题:
  1,抽象类中有构造函数吗?
  有,用于给子类对象进行初始化
  2,抽象类可以不定义抽象方法吗?
  可以,但是少见,目的就是不让该类创建对象。通常这个有方法体,却没有内容。
  abstract class Demo{
  void show();
  void show(){};//有方法体却没有内容
 }
  3,抽象关键字不可以和那些关键字共存?
  非法修饰符组合,abstract和private、static、final
  4,抽象类和一般类的异同点?
  相同点:抽象类和一般类都是描述事物,都在内部定义成员。
  不同点:1,一般类有足够的信息描述事物。
        抽象类描述事物的信息有可能不足。
      2,一般类中不能定义抽象方法,只能定义非抽象方法。
        抽象类可以定义抽象方法,同时也可以定义非抽方法。
      3,一般类可以被实例化
        抽象类不可以被实例化

  5,抽象类一定是个父类吗?
  是,因为需要子类覆盖其方法后才可以对子类实例化。

Example:

 package new_Object;
 //定义一个抽象类
 abstract class Person_A{
     abstract void show();//抽象方法show();
 }
 //Student类继承Person类
 class Student_A extends Person_A{
     //实现抽象方法show();
     void show(){
         System.out.println("抽象类");
     }
 }
 public class Abstract_class {
     public static void main(String[] args) {
         Student_A stu=new Student_A();
         stu.show();
     }
 }

接口:interface{} 是一种特殊的抽象类,一个类可以实现多个接口。
  当一个类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式来定义和表示,就是接口 interfce。
接口不可以实例化,只有由实现接口的子类并覆盖了接口中所有的抽象方法后,该子类才可实例化,否则这是子类就是抽象类。

接口中常见的成员:而且这些成员都有固定的修饰符
1,全局常量:public static final
2,抽象方法:public abstract
特点:接口中的成员都是公共的权限

 package new_Object;
 //定义school接口
 interface School{
     int ID=2015112401;
     String name="张三";
     //定义sspeak、show抽象方法
     void speak();
     void show();
 }
 class Stu implements School{
     //实现speak、show方法
     public void speak(){
         System.out.println("实现speak方法");
     }
     public void show(){
         System.out.println("实现show方法");
     }
 }
 //测试类
 public class Interface_implements {
     public static void main(String[] args) {
         Stu p=new Stu();//创建student实例对象
         //调用student类方法
         p.speak();
         p.show();
     }
 }

多实现:在Java中不直接支持多继承,因为会出现调用的不确定性。所有Java将多继承机制改良,在Java改良成了多实现。

类与类之间是继承关系,类与接口之间是实现关系(implements)
Example:

 interface A{
 public void show();
 }
 interface B{
 public void show();
 }
 class Test implements A,B//多实现
 {
 public void show();
 }

面向对象_06【抽象类:abstract、接口:interface、实现:implements】的更多相关文章

  1. JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

    JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来 ...

  2. Java面向对象_抽象类、接口

    一.抽象类 概   念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规   则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...

  3. JavaSE基础知识(5)—面向对象(抽象类和接口)

    一.抽象类 1.理解 用abstract关键字定义的类,称为抽象类用abstract关键字定义的方法,称为抽象方法意义:当设计父类时,发现该父类根本不需要创建对象,并且里面有不好描述的方法.这个时候往 ...

  4. Java:【面向对象:抽象类,接口】

    本文内容: 抽象类 接口 抽象类与接口的异同 首发日期:2018-03-24 抽象类: 虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并 ...

  5. java面向对象_抽象类和接口

    一.抽象类 1.抽象方法:由abstract修饰.只有定义没有方法体.用一个分号结尾. 2.抽象类: 1)包含抽象方法的类必须是抽象类 2)由abstract修饰 3)不能被实例化 4)抽象类如果不被 ...

  6. 十、Java基础---------面向对象之抽象类与接口

    抽象类(abstract)     当编写一个类时,时常会为该类定义一些方法,这些方法的使用用以描述该类的行为方式,那么这些方法都有具体的方法体.但是在某些情况下,某个父类只是知道子类应该包含怎样的方 ...

  7. go面向对象之多态即接口(interface)

    Go 语言接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口. 实例 /* 定义接口 */ type interface ...

  8. 虚方法(virtual)\抽象方法(abstract)\接口(interface)的区别

    转自:https://www.cnblogs.com/fantaohaoyou/p/9402657.html 虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽 ...

  9. Java面向对象之抽象类,接口

    抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的 ...

  10. C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)

    1.抽象类    抽象类关键词   abstract   (抽象)  override    (重写) 在父集中用   abstract 表示抽象类,抽象方法,在子集中用  override 改写 抽 ...

随机推荐

  1. 搞懂spring事务

    最近一个官网的项目,我在service层有两个添加数据的操作,很意外报错了,然后就研究到了事务 之前只是知道声明式事务和编程式事务,编程式的事务显得比较麻烦,一般都是使用声明式事务.. spring提 ...

  2. IntelliJ IDEA 17和Maven构建javaWeb项目

    前言 电脑又断电了,眼看着写好的东西就没有了,这是第二次犯这个错误了.很难受呀!还是回到正题吧,我们来使用IDEA和Maven构建一个JavaWeb项目 软件环境: IDEA:2017.2.1 JDK ...

  3. hackerrank 训练军队

    高阶传送魔法 在神奇的Kasukabe国家,人们努力拥有一个技能.一共有N个类型的技能,并且开始的时候拥有第 i 种技能的人有Ci个 . 这个国家有T个巫师,他们有能力将一个人的技能进行转换.每个巫师 ...

  4. bzoj:3397 [Usaco2009 Feb]Surround the Islands 环岛篱笆

    Description     约翰在加勒比海买下地产,准备在这里的若干个岛屿上养奶牛.所以,他要给所有岛屿围上篱笆.每个岛屿都是多边形.他沿着岛屿的一条边界朝一个方向走,有时候坐船到另一个岛去.他可 ...

  5. HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  6. python内建函数isinstance基础用法

      语法:isinstance(object,type) 作用:来判断一个对象是否是一个已知的类型.  其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个 ...

  7. linux下vi编辑某文件时,操作出现 错误提示: E325: ATTENTION 2, Found a swap file by the name ".p1.c.swp"

    当我在linux下用vi打开p1.c文件时 root@iZ2zeeailqvwws5dcuivdbZ:~/1/01/指针# vi p1.c 会出现如下信息: E325: ATTENTION Found ...

  8. c语言函数实参与形参整理

  9. Django 用散列隐藏数据库中主键ID

    最近看到了一篇讲Django性能测试和优化的文章, 文中除了提到了很多有用的优化方法, 演示程序的数据库模型写法我觉得也很值得参考, 在这单独记录下. 原文的演示代码有些问题, 我改进了下, 这里可以 ...

  10. 编写自己的JavaScript方法库

    下面列出了我在项目中经常使用到的一些方法,这些方法可以很方便的提高我们的工作效率,代码在GitHub上面,点击目录就可以跳转了,欢迎大家通过fork,改编和优化成自己的JavaScript方法库. 目 ...