超详细的JAVA高级进阶基础知识02

目录

2. 面向对象高级

2.1 接口新特性

2.1.1 接口新特性

2.1.2 JDK8 接口特性 

2.1.3 JDK9 接口特性

2.2 代码块

2.2.1 代码块的介绍

2.3 内部类

2.3.1 内部类的介绍 

2.3.2 内部类成员访问

2.3.3 内部类-面试题

2.3.4 内部类的分类

2.4 Lambda 表达式

2.4.1 Lambda 概述

2.4.2 Lambda表达式的省略写法

2.4.3 Lambda表达式和匿名内部类的区别

2.5 窗体、组件、事件

2.5.1 窗体对象 JFrame

2.5.2 组件

2.5.3 总结

2.5.4 事件

2.6 常见的两个设计模式

2.6.1 适配器设计模式

2.6.2 模板设计模式

2.6.3 今日学习任务 


2. 面向对象高级

2.1 接口新特性

2.1.1 接口新特性

  • JDK8的新特性:接口中可以定义有方法体的方法。(默认、静态)
  • JDK9的新特性:接口中可以定义私有方法。

 

2.1.2 JDK8 接口特性 

 

public class InterfaceTest {
    public static void main(String[] args) {

        AInterImpl a = new AInterImpl();
        a.method();

        A.function();
    }
}

interface A {
    default void method(){
        System.out.println("A...method");
    }

     static void function(){
        System.out.println("A...static...function");
    }
}

interface Inter {
    void show();
    void print();

    default void method(){
        System.out.println("Inter...method");
    }

}

class AInterImpl extends Object implements Inter , A {


    @Override
    public void show() {
        System.out.println("AInterImpl...show");
    }

    @Override
    public void print() {
        System.out.println("AInterImpl...print");
    }

    @Override
    public void method() {
        A.super.method();
        Inter.super.method();
    }

}

class BInterImpl implements Inter {

    @Override
    public void show() {
        System.out.println("BInterImpl...show");
    }

    @Override
    public void print() {
        System.out.println("BInterImpl...print");
    }
}

2.1.3 JDK9 接口特性

将方法public default void log() 改为 private void log() 进而阻止其"暴露"给子类的直接调用

 

public class InterfaceTest {
    /*
        JDK9接口特性 :
            接口中允许定义私有方法
     */
    public static void main(String[] args) {

    }
}


interface Inter {
    void show();
    void print();

    public static void start(){
        System.out.println("start方法执行...");
        log();
    }

    public static void end(){
        System.out.println("end方法执行...");
        log();
    }

    private static void log(){
        System.out.println("日志记录");
    }
}

2.2 代码块

2.2.1 代码块的介绍

                  在Java类下,使用 { } 括起来的代码被称为代码块 

分类:

  • 局部代码块
  • 构造代码块
  • 静态代码块
  • 同步代码块

 

2.3 内部类

2.3.1 内部类的介绍 

内部类就是定义在一个类里面的类

2.3.2 内部类成员访问

  • 内部类中, 访问外部类成员 : 直接访问, 包括私有
  • 外部类中, 访问内部类成员 : 需要创建对象访问

2.3.3 内部类-面试题

 

 

2.3.4 内部类的分类

  • 成员内部类
  • 静态内部类
  • 局部内部类
  • 匿名内部类

局部内部类 (鸡肋语法,了解即可

局部内部类放在方法、代码块、构造器等执行体中。

 

2.4 Lambda 表达式

2.4.1 Lambda 概述

2.4.2 Lambda表达式的省略写法

  • 参数类型可以省略不写。
  • 如果只有一个参数,参数类型可以省略,同时 () 也可以省略。
  • 如果Lambda表达式的方法体代码只有一行代码

♦ 可以省略大括号不写,同时要省略分号

♦ 此时,如果这行代码是return语句,必须省略return不写,同时也必须省略 ";" 不写
 

2.4.3 Lambda表达式和匿名内部类的区别

 

2.5 窗体、组件、事件

2.5.1 窗体对象 JFrame

public class Test {    
    public static void main(String[] args) {
        // 创建窗体对象        
        JFrame frame = new JFrame();
        // 设置宽和高 
       frame.setSize(514, 595);
        // 设置关闭模式                
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        // 设置窗体标题       
        frame.setTitle("窗体");        
        // 设置窗体可见        
        frame.setVisible(true);    
   }
}

2.5.2 组件

按钮组件

 

使用窗体对象调用面板对象并添加对应的组件 

frame.getContentPane() 返回面板对象

 使用Jframe类时 需取消默认布局 

 

2.5.3 总结

 

JLabel 组件

  • JLabel​(String text) 使用指定的文本创建一个 JLabel 对象
  • JLabel​(Icon image) 创建一个具有指定图像的 JLabel 对象。

注意:如果多个组件摆放在同一个位置,后添加的组件,会被压在底部。 

  

2.5.4 事件

 事件是可以被组件识别的操作

    当你对组件干了某件操作之后,就会执行对应的代码

 

ActionListener: 对鼠标、空格的监听

 KeyListener 对键盘的监听

 

2.6 常见的两个设计模式

2.6.1 适配器设计模式

♦ 适配器 设计模式 解决接口与接口实现类之间的矛盾问题
♦ 实现步骤
  1. 编写一个 xxxAdapter 实现对应接口
  2. 重写内部所有抽象方法但方法都是空实现
  3. 让自己的类去继承适配器类, 重写自己需要的方法即可
  4. 为了避免其他类创建适配器类的对象使用 abstract 进行修饰

 

 

 

2.6.2 模板设计模式

  • 模板设计模式:把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法

    让使用模板的类(继承抽象类的类)去重写抽象方法实现需求  

 

♦ 小结模板设计模式的优势,模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可

2.6.3 今日学习任务 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值