一、接口的基础知识

1、为什么需要接口

为解决实际应用中,单一继承无法解决的问题

2、什么是接口

a)   基本概念?

接口是一种特殊的抽象类

接口是一种规范和标准,可以约束类的行为,是一些方法特征集合,但方法没有方法体

b)   基本语法

访问修饰符 interface 接口名{

//定义 方法(没有方法体),方法的访问修饰符默认为public

//定义 属性(默认是公共的静态的常量)

数据类型常量名=值;

}

访问修饰符只能为public和默认的

c)   注意事项?

1.接口命名,接口字必须和文件名相同

2.接口中的方法没有方法体

3.接口中的属性名必须大写,且要赋值

4.接口不能实例化,没有构造方法

5.接口支持多重继承,一个接口可以继承多个接口,但不能继承类

6.接口中的方法,必须被所有实现接口的类具体实现

public abstract classHandest {private String brand; //品牌

private String type; //型号

publicString getBrand() {returnbrand;

}public Handest(String brand,String type) { //有参构造方法

this.brand =brand;this.type=type;

}publicString getType() {returntype;

}public abstract voidprint();public abstract voidfunction();

}

父类

父类

public interfaceNetwork {void surf(); //上网

}

//接口2

public interfacePlayWiring {void play(); //播放功能

}

//接口3

public interfaceTakePictures {void takePictures(); //拍照

}

//接口4

public interfaceVideoCall {void visualTelephone(); //视频电话

}

public classAptitudeHandset extends Handest implements PlayWiring,Network,TakePictures,VideoCall {publicAptitudeHandset(String brand, String type) {

super(brand, type);

}

@Overridepublic voidvisualTelephone() {

System.out.println("开始视频通话......");

}

@Overridepublic voidtakePictures() {

System.out.println("咔嚓......拍照成功");

}

@Overridepublic voidsurf() {

System.out.println("已启动移动网络......");

}

@Overridepublic voidplay() {

System.out.println("开始播放视频《小时代》......");

}

@Overridepublic voidprint() {

System.out.println("这是一款型号为"+super.getType()+"的"+super.getBrand()+"手机:");

}

@Overridepublic voidfunction() {

System.out.println("发送带图片与文字的信息......");

}

}

子类

子类

public static voidmain(String [] args){

AptitudeHandset a=new AptitudeHandset("I9100","HTC");

a.print();

a.surf();

a.play();

a.takePictures();

a.function();

a.visualTelephone();

}

测试类

测试类

3、一个类如何实现接口

class 类名 implements 接口名{

//必须对接口中的方法,具体实现

}

4、一个类如何继承另外一个类,且同时实现一个接口【变相的让1个类实现多重继承】

class 子类名 extends 父类名 implements 接口1,…接口n{

}

5、接口的好处?

接口体现了约定和实现相分离的原则

弥补了Java类单一继承的不足,有利于代码的扩展和维护

6、抽象类和接口的异同点?【常见笔试题】

相同点

1.二者都不可以实例化

2.二者都包含抽象方法,必须被非抽象的子类重写或实现

3.二者都可以用来实现多态

不同点:

1、 抽象类只能单一继承,而接口可以支持多重继承

2、 抽象类中除抽象方法外,还可以有非抽象的方法;接口中的方法只能是抽象方法

3、 抽象类可以有构造方法,接口没有

4、 抽象类中的变量可以不赋值,接口中的变量必须赋值

5、 抽象类中可以定义静态方法,接口不可以

public abstract classPet {privateString name;private inthealth;private intlove;public Pet(String name,int health,intlove){this.name=name;this.health=health;this.love =love;

}publicString getName() {returnname;

}public intgetHealth() {returnhealth;

}public intgetLove() {returnlove;

}public abstract voidprint();

}

父类

父类

//接口1

public interfaceEatable {void eat(); //吃饭

}

//接口2

public interfaceFlyingCatchable {void catchingFly(); //接飞盘

}

public classDog1 extends Pet implements Eatable,FlyingCatchable{public Dog1(String name, int health, intlove) {

super(name, health, love);//TODO Auto-generated constructor stub

}

@Overridepublic voidprint() {//TODO Auto-generated method stub

System.out.println("我叫"+super.getName()+",健康值是:"+super.getHealth()+",与主人的亲密度为:"+super.getLove()+"。");

}

@Overridepublic voidcatchingFly() {//TODO Auto-generated method stub

System.out.println("我正在和主人玩飞盘!");

}

@Overridepublic voideat() {//TODO Auto-generated method stub

System.out.println("我正在吃饭!");

}

}

子类

子类

public classPetText {public static voidmain(String [] args){

Dog1 d=new Dog1("好好",90 ,95);

d.print();

d.eat();

d.catchingFly();

}

二、  面向接口编程

1、接口表示一种能力

2、接口表示一种约定

3、面向接口编程的好处?

a)   实现接口和实现的分离

b)   可以降低代码间的耦合性

c)   提高程序的可扩展性和可维护性

java面向对象第四章上机_java面向对象第四章相关推荐

  1. java面向对象程序设计董小园_java面向对象程序设计(董小园版).doc

    目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc238553494" 第1章了解Java PAGEREF _Toc238 ...

  2. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  3. Java怎么用继承回复信息_JAVA面向对象-继承

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java继承: 1.继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承可以理解为一个对象从另一个对象获取属性的过程. 2.如果类 ...

  4. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

  5. java里面比较重要的东西_Java面向对象程序设计中很重要的一些东西

    面向对象具有多方面的吸引力.对于管理人员,它实现了更快和更廉价的开发与维护过程.对于分析与设计人员,能生成清晰.易于维护的设计方案.对于程序开发人员,对象的理解又是如此浅显.此外,面向对象的工具以及类 ...

  6. java面向对象三大特性难吗_JAVA面向对象的三大特性

    JAVA面向对象的三大特性 每一对象是其状态和行为的封装.类是按一定体系和层次安排的,使得子类可以从超类继承行为.在这个类层次体系中有一个根类,它是具有一般行为的类.Java程序是用类来组织的.下面是 ...

  7. java中object类怎么赋值_Java面向对象之Object类

    一.继承体系的老祖宗是Object类.(Object类是所有类的父类) 当我们不希望在程序中某些类被继承,某些方法被重写,某些数据被修订.就是final关键字闪亮登场的时候了. 一个类没有使用exte ...

  8. java对象赋值给另一个对象_java面向对象编程

    对象,从字面意思来看就是我们面对的物象.由此便可以知道,万事万物皆为对象.比如:一台电脑,一辆汽车,一部手机等等都是对象. 比如我们想要买一部手机,我们想要内存大一点的,最新款的,CPU 运算快一点的 ...

  9. java页面间面向对象的方法面试题_JAVA面向对象面试题带答案(墙裂推荐)

    1) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要有子类重写,应该使用(c)关键字来申明父类的这些方法. a) Finalc b) Static c) Abstract d) Void ...

最新文章

  1. 修改与删除@property封装的数据属性
  2. html回车按键确认按钮,button默认enter事件(回车事件)。
  3. 最适合编程的10大字体推荐
  4. 光纤收发器在高清网络视频监控工程项目中的应用
  5. [bzoj4881][Lydsy2017年5月月赛]线段游戏
  6. SSH-struts2的异常处理
  7. python入门经典100例-【python】编程语言入门经典100例--14
  8. 一次失败的做题经历(HDU2112)
  9. java 菜单快捷键_Java为菜单栏添加快捷键
  10. 03.09 随手记(Mock数据生成器,Easy Mock基本使用)
  11. 米聊PC版体验评测: 简约过头的即时聊天工具
  12. 莫烦python学习笔记
  13. 网络视频会议管理系统设计原则
  14. c语言编程模拟银行取钱代码,C语言 用初等函数模拟银行取款
  15. 金星DEM数据介绍与下载教程
  16. Crawlab(crawlab github)
  17. Button 按钮的点击时候出现蓝色边框
  18. 我所知道坦克大战(单机版)之Client窗口的创建、关闭、禁止调整大小
  19. 弘辽科技:淘宝开店会抽取多少利润?要多少费用?
  20. 物联网中,北向接口和南向接口是什么?

热门文章

  1. iOS UIButton(按钮)
  2. 《战狼2》电影观后感
  3. RHEL7 下双网卡绑定做主备(冗余)
  4. 【SICP练习】38 练习1.43
  5. Ext JS 4预览:重构和规范渲染过程()
  6. 菜鸟学python 哪吒_Python 学习之路 (前言)
  7. python读取指定行的txt_【Python】读取txt文件,获取指定行中指定位置数据
  8. idea bookmark 怎么用
  9. SQL优化|Java面试题
  10. 我从阿里面试回来,想和Java程序猿谈一谈