• abstract class

抽象类定义规则如下:

(1) 抽象类和抽象方法都必须用 abstract 关键字来修饰。
(2) 抽象类不能被直接实例化,也就是不能用new关键字去产生对象。
(3) 抽象方法只需声明,而不需实现
(4) 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法才能被实例化,否则这个子类还是抽象的

abstract class Person2 { // 抽象类String name;int age;String occupation;public abstract void talk();public Person2(String name, int age, String occupation){this.name = name;this.age = age;this.occupation = occupation;}
}class Student1 extends Person2
{public Student1(String name, int age, String occupation){// 必须明确调用 抽象类的构造方法super(name, age, occupation);}// 要实例化, 必须 覆写 抽象方法 talkpublic void talk(){System.out.println("覆写talk()");}
}class test2{public static void main(String[] args){Student1 s = new Student1("Ming", 18, "student");s.talk();}
}
  • interface 接口
    数据成员全部是常量 final 初始化
    所有方法全部是 abstract 抽象的,没有一般方法

Java 没有多重继承,但是可以使用 接口 来实现 多继承
class 类名 implements 接口A, 接口B

接口 可以继承于 多个 接口
interface 接口C extends 接口A, 接口B

// 接口
// 数据成员全部是常量 final 初始化
// 所有方法全部是 abstract
interface Person3 {final String name = "Michael"; // 必须初始化,final 可省略int age = 18;String occupation = "工程师";public abstract void talk1(); // abstract 可省略
}
interface Worker1{String tool = "hammer";
}// 类可以实现多个接口
class Student2 implements Person3, Worker1
{// 要实例化,必须覆写 talkpublic void talk1(){System.out.println("name: " + this.name + ", age: " + this.age+ ", occupation: " + this.occupation+ ", tool: " + this.tool);}
}// 接口可以继承于多个接口 (类的继承只能继承1个父类)
interface AnotherInterface extends Person3, Worker1
{String state = "person3+worker1";public void talk2();//抽象方法
}class Student3 implements AnotherInterface{// Student3 要实现 Person3, Worker1, AnotherInterface 3个接口public void talk1(){System.out.println("每个抽象方法要覆写,talk1()");}public void talk2(){System.out.println("每个抽象方法要覆写,talk2()");}
}
class test3
{public static void main(String[] args){Student2 s2 = new Student2();s2.talk1();Student3 s3 = new Student3();s3.talk1();s3.talk2();}
}

输出:

name: Michael, age: 18, occupation: 工程师, tool: hammer
每个抽象方法要覆写,talk1()
每个抽象方法要覆写,talk2()

Java 抽象类、接口相关推荐

  1. JAVA抽象类接口初始化块实验_抽象类和接口 - 逝水无痕7777的个人空间 - OSCHINA - 中文开源技术交流社区...

    抽象类和接口 1.抽象类 抽象方法是只有方法签名,没有方法实现的方法.有抽象方法的类只能被定义成抽象类,抽象类可以没有抽象方法.抽象方法和抽象类必须使用abstract修饰符来定义. 抽象类不能被实例 ...

  2. java抽象类接口举例代码_Java接口和抽象类实例分析

    本文实例讲述了Java的接口和抽象类.分享给大家供大家参考.具体分析如下: 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相 ...

  3. Java抽象类+接口详细图解 一篇博客拿下

    目录 抽象类 抽象类的概念 抽象类的语法 抽象类的特性 抽象类的作用 接口 接口的概念 接口的语法 接口特性 实现多个接口 接口间的继承 接口实例 1.Compareable 2.Comparator ...

  4. Java抽象类/接口

    一.抽象类: 1.关键字:abstract ;修饰抽象类,抽象方法: 2.注释: 2.1.抽象类不可以创建对象,但是可以被声明引用(强制被使用多态): 2.2.抽象类不一定包含抽象方法,包含抽象方法一 ...

  5. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

  6. java 抽象类继承抽象类_Java之继承、抽象类、接口篇

    一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...

  7. Java接口和Java抽象类的认识

    在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...

  8. Java抽象类与接口的区别

    很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...

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

    IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...

  10. java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

最新文章

  1. java 数据结构容器之HashSet
  2. git rebase -i 汇合提交
  3. 面试官:聊聊你对分布式锁技术方案的理解
  4. Android 使用图片铺满某个区域
  5. 如何成为一个优秀的程序员_如何成为一名优秀的程序员
  6. css跑道_如何不超出跑道:计划种子的简单方法
  7. python json序列化对象_Python学习之json序列化
  8. 蛮力法在字符串匹配问题中的应用(JAVA)--朴素模式匹配算法
  9. linux 可执行文件去除绝对路径
  10. [debug] 开源项目的本地使用:使用pip安装的函数库不能被anaconda和pycharm使用+visdom使用 +路径问题
  11. 安卓电视硬件测试软件,据说这是2017 最好用的智能电视软件!
  12. 『提醒自己』-自身遗忘掉的知识1
  13. opencv官网下不了了,分享各版本
  14. 在vue中在线查看pdf
  15. MySQL 怎么插入10天前的日期_Mysql笔记
  16. Qt示例程序打开失败,出现一个感叹号图标
  17. 【OpenCV 例程300篇】202. 查表快速替换(cv.LUT)
  18. BUUCTF 藏藏藏
  19. 51单片机驱动ds12887c语言,DS12887(时钟日历芯片) c语言驱动程序
  20. 相机内参,外参的物理意义

热门文章

  1. python 第三方模块 yaml - 处理 YAML (专门用来写配置文件的语言)
  2. 集合添加元素python_Python 集合(Set)
  3. curl查看swift状态命令_HTTP 请求与响应包括哪些,如何用Chrome查看 HTTP 请求与响应内容和curl 命令的使用...
  4. 本地音频播放,使用AVFoundation.framework中的AVAudioPlayer来实现
  5. dedecms php5.4 无法退出后台,PHP5.4版本织梦dedecms后台退出空白的解决方法
  6. 小程序循环里做字符串拼接_昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了...
  7. 一号团队-团队任务3:每日立会(2018-12-01)
  8. KMP 算法 学习 整理
  9. (翻译)Google Guava Cache
  10. 给javascript初学者的24条最佳实践