Java学习高级四

JDK8开始,接口新增了三种形式的方法

在这里插入图片描述
在这里插入图片描述

接口的多继承

在这里插入图片描述
在这里插入图片描述

内部类

在这里插入图片描述
在这里插入图片描述

成员内部类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

静态内部类

在这里插入图片描述
在这里插入图片描述

局部内部类

在这里插入图片描述

匿名内部类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



import javax.swing.*;
import java.awt.event.ActionEvent;

public class Test {
    public static void main(String[] args) {
        // 扩展 内部类在开发中的真实使用场景
        // GUI编程
        // 1、创建窗口
        JFrame win = new JFrame("登录界面");
        // 2、创建面板
        JPanel panel = new JPanel();
        win.add(panel);

        // 3、创建按钮
        JButton btn = new JButton("登录");
        // 4、将按钮添加到桌布上
        panel.add(btn);

        // 给按钮绑定单击事件
       /* btn.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null,"登录成功");
            }
        });*/
        //匿名内部类 最终目标  简化代码  lamba表达式
        btn.addActionListener(e -> {
            JOptionPane.showMessageDialog(null, "登录成功");
        });

        // 5、设置窗口的尺寸
        win.setSize(300, 200);
        win.setLocationRelativeTo(null);
        win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        win.setVisible(true);
    }
}

枚举

在这里插入图片描述

枚举的特点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

泛型

在这里插入图片描述

import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        // 认识泛型
        ArrayList list = new ArrayList();
        //list.add(123);
        list.add("abc");
        //list.add(new Person());

        for (int i = 0; i < list.size(); i++) {
           String e= (String) list.get(i);
           System.out.println(e);
        }

        System.out.println("--------------------------");
        //ArrayList<String> list2 = new ArrayList<String>();
        ArrayList<String> list2 = new ArrayList<>();// jdk 1.7 开始 后面的数据类型可以省略
        list2.add("abc");
        list2.add("abc1");
        //list2.add(new Person());
        for (int i = 0; i < list2.size(); i++) {
            String e= list2.get(i);
            System.out.println(e);
        }
    }
}

class Person{}

在这里插入图片描述

//泛型类
public class MyArrayList<E> {
    private Object[] arr = new Object[10];
    private int size = 0;
    public boolean add(E e) {
        arr[size++] = e;
        return true;
    }
    public E get(int index) {
        return (E) arr[index];
    }
}

public class Test {
    public static void main(String[] args) {
        // 泛型类的定义和使用
        MyArrayList<String> list = new MyArrayList<>();
        list.add("hello");
        list.add("world");
        String s = list.get(0);
        System.out.println(s);
    }
}

在这里插入图片描述

public interface Data <T>{
    void add(T t);
    ArrayList<T> getByName(String name);
}

在这里插入图片描述

public class BENZ extends Car {
}

public class BMW extends Car {
}


public class Car {
}


public class Dog {
}

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 泛型方法的定义和使用
        String res = test("java");
        System.out.println(res);
        Dog d = test(new Dog());
        System.out.println(d);



        // 所有的汽车可以一起参加比赛
        ArrayList<Car> cars = new ArrayList<>();
        cars.add(new BMW());
        cars.add(new BENZ());
        go(cars);


        ArrayList<BMW> bmws = new ArrayList<>();
        bmws.add(new BMW());
        bmws.add(new BMW());
        go(bmws);

        ArrayList<BENZ> benzs = new ArrayList<>();
        benzs.add(new BENZ());
        benzs.add(new BENZ());
        go(benzs);


        /*ArrayList<Dog> dogs = new ArrayList<>();
        dogs.add(new Dog());
        dogs.add(new Dog());
        go(dogs);*/
    }

    // ?是通配符,在使用泛型的时候可以代表一切类型 // ? extends Car 上限继承  // ?  super Car 下限继承
    public static void go(ArrayList<? extends Car> cars) {
        for (int i = 0; i < cars.size(); i++) {
            System.out.println(cars.get(i));
        }
    }

    /*public static <T extends Car> void go(ArrayList<T> cars) {
        for (int i = 0; i < cars.size(); i++) {
            System.out.println(cars.get(i));
        }
    }*/
    // 泛型方法
    public static <T> T test(T t) {
        return t;
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值