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_阅读 29,091评论 18 398
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 124,548评论 18 136
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 802评论 0 5
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 7,191评论 3 93
  • 我想请时光把你带走, 带到那,杳无人烟的大漠, 最好黄沙能掩埋住你的身躯, 砾石能吹走你的足迹, 冷月能凝固你的气...
    又见依依阅读 162评论 0 2
  • 我的妈妈离开我已经25年了,在这秋雨连绵的日子我忽然又想起了她。她的艰辛,她的暴脾气,她的谆谆教诲,一下子浮现出...
    阿兰小赫阅读 219评论 16 23
  • Android地图获取位置 1.首先获取LocationManager管理类 2.获得支持哪些定位服务 3.获得L...
    Karma1026阅读 1,709评论 4 5
  • 赠北漂朋友! 山河昨夜雪留痕, 刺骨寒风遍早春。 千树岭头挥素臂, 一川河水映乌云。 山生白发怜游子, 地吐红梅动...
    李缓之阅读 540评论 9 19