鱼C论坛

 找回密码
 立即注册
查看: 2983|回复: 0

[学习笔记] Java暑期学习Day22

[复制链接]
发表于 2017-7-26 23:01:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天是第22天)


                               
登录/注册后可看大图


接口与多态
1.接口语法


interface接口名{
//静态常量、抽象方法
}

  对于定义行为,可以使用interface关键字定义,接口中的方法不能操作,直接表示为abstract,而且一定是public

  类要操作接口,必须使用implements关键字。操作某接口时,对接口中定义的方法有两种处理方法,一是操作接口中定义的方法二是再度将该方法标识为abstract

2.接口的特点
  a.接口中只能存放静态常量和抽象方法

  b.Java接口是对功能的扩展。

  c.通过实现接口,java类可以实现多实现。

  d.一个可以同时继承(extends)一个父类并且实现(implements)多个接口。

  e.接口和接口之间可以通过extends来产生继承关系。
  (接口可以继承别的接口,也可以同时继承两个以上的接口,同样也是使用extends关键字,这代表了继承父接口的行为。)


  以Java的语意来说,继承会有“is-a”的关系,操作接口则表示“拥有行为”,但不会有“is-a”的关系。
  对于接口多态语法的判断,方法是“右边是不是拥有左边的行为”,或者“右边对象是不是操作了左边接口”。


3.接口与抽象类的区别
  a.抽象类与具体实现类之间是一种继承关系,也就是说如果采用抽象类的方法,则父类和子类在概念上应该是相同的。

  b.接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为。

  c.抽象类是对一组具有相同属性和行为的逻辑上有关系的事物的一种抽象,而接口是对一组具有相同属性和行为的逻辑上有关系的事物的一种抽象。

  d.抽象类——“is-a”;接口——“like-a”。


  1. /*
  2. *
  3. * 开发系统时,主体构架使用接口,接口构成系统的骨架
  4. *
  5. *
  6. *
  7. */

  8. public class InterfaceDemo {
  9.         public static void main(String[] args) {
  10.                 Person p = new Person();
  11.                 Child child = new Child();
  12.                 Dog dog = new Dog();
  13.                 p.feed(child);
  14.                 p.feed(dog);

  15.         }
  16. }

  17. interface IAbility {
  18.         void eat();

  19.         // 接口中只能放有公有的静态常量和抽象方法
  20.         // public static final int number=1;
  21.         //
  22.         // 默认会加public static final
  23.         //
  24.         // public abstract void show();
  25.         // 默认会加public abstract
  26. }

  27. class Child implements IAbility {

  28.         public void eat() {

  29.                 System.out.println("吃米饭");

  30.         }

  31. }

  32. class Person {
  33.         // public void feed(Child child){
  34.         // child.eat();
  35.         // }
  36.         // public void feed(Dog dog){
  37.         // dog.eat();
  38.         // }
  39.         // 接口的应用变量可以引用其实现类的对象
  40.         // 接口实现了多态
  41.         public void feed(IAbility ability) {

  42.                 ability.eat();// 动态绑定

  43.         }
  44. }

  45. class Dog implements IAbility {

  46.         public void eat() {

  47.                 System.out.println("啃骨头");

  48.         }

  49. }
复制代码
结果——


吃米饭
啃骨头





评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 19:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表