Java学习1214

接口

  • 接口是方法声明的集合

  • 接口的三个关键点

    • 接口代表能力
    • 接口代表约定
    • 接口代表角色
  • 如果一个方法暂时无法给出实现 那么可以将其声明为抽象方法
    抽象方法需要用abstract关键字修饰且没有方法体
    如果一个类中有抽象方法(说明这个类不完整)那么必须被声明为抽象类
    抽象类不能实例化(不能创建抽象类的对象)
    抽象类是专门留给其他类去继承的类

  • 抽象类和接口本身不能实例化 但是可以使用就地实例化的方式来创建对象
    所谓就地实例化实际上是创建了匿名内部类(anonymous inner type)的对象

  • 接口之间可以继承的而且允许多重继承(一个接口继承多个接口)

Java8+ ---> Lambda表达式 ---> 匿名函数
  • 仅限接口中只有一个方法且没有默认方法的时候
    okButton.addActionListener(e ->{
    changeBgColor();
    });
类和类之间简单的说有三种关系:
  • is-a - 继承 - 学生和人
  • has-a关系 - 关联(聚合/合成) - 扑克和一张牌
  • use-a关系 - 依赖 - 人和房子
类和它实现的接口之间的关系:
  • play-a / like-a - 实现关系
重写(置换、覆盖、覆写): 父类有这个方法可能实现了可能没实现子类把父类的这个方法重新实现一次(给出自己的实现版本)
  • 例子 : 儿子继承父亲,实现和尚,音乐家接口
package com.baidu.test;

import com.baidu.Daddy;
import com.baidu.Monk;
import com.baidu.Musician;
import com.baidu.Son;
// 接口的三个关键点
//  - 接口代表能力
//  - 接口代表约定
//  - 接口代表角色
public class Test02 {

    public static void main(String[] args) {
        Son son = new Son("白玉龙儿子");
        son.gamble();
        son.smoke();
        son.chant();
        son.eatVegetable();
        son.knockTheBell();
        son.playPinao();
        son.playViolin();
        
        Daddy daddy = son;
        daddy.gamble();
        
        //让儿子扮演和尚的角色
        Monk monk = son;
        monk.chant();
        monk.eatVegetable();
        monk.knockTheBell();
        Musician musician = son;
        musician.playPinao();
        musician.playViolin();

父亲类

package com.baidu;

public class Daddy {
    protected String name;
    
    public Daddy(String name){
        this.name = name;
    }
    
    public void gamble(){
        System.out.println(name + "正在赌博.");
    }
}

和尚接口

package com.baidu;
//接口之间可以继承的而且允许多重继承(一个接口继承多个接口)
public interface Monk {
    public default void chant(){    
    }   
    public default void eatVegetable(){ 
    }   
    public default void knockTheBell(){ 
    }
    public default void practiceKongfu(){   
    }
}

音乐家接口

package com.baidu;

public interface Musician {

    void playPinao();
    void playViolin();
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,227评论 0 5
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 8,609评论 3 93
  • 我想请时光把你带走, 带到那,杳无人烟的大漠, 最好黄沙能掩埋住你的身躯, 砾石能吹走你的足迹, 冷月能凝固你的气...
    又见依依阅读 258评论 0 2