【java】【面对对象高级4】内部类、枚举、泛型

这篇具有很好参考价值的文章主要介绍了【java】【面对对象高级4】内部类、枚举、泛型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、内部类

1.1 成员内部类【了解】

1.1.1 定义

 1.1.2 扩展变量

1.2 静态内部类【了解】

1.2.1 定义

 1.2.2 扩展变量

1.3 局部内部类【了解】

1.4 匿名内部类【重点】

1.4.1 定义

 1.4.1.1 常规写法

1.4.1.2 匿名内部类改造

 1.4.2 匿名内部类的常见使用场景

1.4.2.1 作为一个参数传输给方法

 1.4.2.2 匿名内部类在开发中实际场景

2、枚举类

2.1 认识枚举

 2.2 枚举类特点

 2.3 抽象枚举

 2.4 枚举实现单例模式

2.5 枚举的应用场景 

 2.5.1 常规做法1:

 2.5.2 常规做法2-常量方式

 2.5.3 枚举实现

 3、泛型

3.1 认识泛型

3.2 泛型类

3.2.1 如何自己定义泛型类(一般架构师做)

 3.2.2 模仿ArrayList写一个简单的MyArrayList泛型类

 3.2.3 写一个定义2个类型的泛型类Myclass2

 3.2.4 MyClass3泛型类,使用继承

 3.2.5 主函数

3.3 泛型接口

3.3.1 如何写泛型接口

3.3.2 写一个泛型接口

 3.3.3 学生类StudentE

3.3.4 老师类TeacherE

 3.3.5 实现类TeacherData

 3.3.6 实现学生类StudentData

3.4 泛型方法、泛型通配符、上下限

 3.4.1 写一个泛型方法

 3.4.2 一个例子

3.4.2.1 Car类

 3.4.2.1 BMW类

 3.4.2.2 BENZ类

 3.4.2.3 主程序

3.5 泛型的注意事项:擦除问题、基本数据类型问题

 3.5.1 擦除问题

 3.5.2 基本数据类型问题


前言:java的内部类(静态内部类、局部内部类、匿名内部类)、枚举、泛型的语法使用

1、内部类

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

1.1 成员内部类【了解】

1.1.1 定义

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 1.1.2 扩展变量

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

1.2 静态内部类【了解】

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

1.2.1 定义

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 1.2.2 扩展变量

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

1.3 局部内部类【了解】

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

1.4 匿名内部类【重点】

1.4.1 定义

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 1.4.1.1 常规写法

 【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

1.4.1.2 匿名内部类改造

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 1.4.2 匿名内部类的常见使用场景

1.4.2.1 作为一个参数传输给方法

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 简化一下:

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 1.4.2.2 匿名内部类在开发中实际场景
package com.runa.staticdemo;

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

public class TestDesk {
    public static void main(String[] args) {
        JFrame win =new JFrame("登录界面");
        JPanel panel = new JPanel();
        win.add(panel);

        JButton btn = new JButton("登录");
        panel.add(btn);
        // 给按钮绑定单击事件
//        btn.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                JOptionPane.showMessageDialog(win,"登录成功~");
//            }
//        });
        // 最终目的是简化代码
        btn.addActionListener(e -> JOptionPane.showMessageDialog(win,"登录成功~"));


        win.setSize(400,400);
        win.setLocationRelativeTo(null);
        win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        win.setVisible(true);
    }
}

2、枚举类

2.1 认识枚举

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 2.2 枚举类特点

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 2.3 抽象枚举

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 2.4 枚举实现单例模式

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

2.5 枚举的应用场景 

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 2.5.1 常规做法1:

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 2.5.2 常规做法2-常量方式

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 2.5.3 枚举实现

 【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 3、泛型

3.1 认识泛型

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

package com.runa.staticdemo;

import java.util.ArrayList;

public class TestE {
    public static void main(String[] args) {
//        ArrayList list = new ArrayList<>();
//        list.add("小马");
//        list.add("次奥");
//        list.add("小曹");
//        list.add(new Cat());
//
//        for (int i = 0; i < list.size(); i++) {
//            String e = (String) list.get(i);
//            System.out.println(e);
        System.out.println("-------------------------------------");
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("小米");
        list1.add("小马");
        list1.add("字符串");
        //        list1.add(new Cat());
        for (int i = 0; i < list1.size(); i++) {
            String e = (String) list1.get(i);
            System.out.println(e);
        }

        System.out.println("-------------------------------------");
        ArrayList<Cat> list2 = new ArrayList<>();
        list2.add(new Cat());

    }
}

class Cat{
    
}

3.2 泛型类

3.2.1 如何自己定义泛型类(一般架构师做)

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 3.2.2 模仿ArrayList写一个简单的MyArrayList泛型类

package com.runa.staticdemo;

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

        return (E) arr[index]; //强转
    }
}

 3.2.3 写一个定义2个类型的泛型类Myclass2

package com.runa.staticdemo;

public class Myclass2<E, T> {
    public void put(E e, T t){

    }
}

 3.2.4 MyClass3泛型类,使用继承

package com.runa.staticdemo;

public class MyClass3<E extends Animal> {
}

 3.2.5 主函数

package com.runa.staticdemo;

public class TestAL {
    public static void main(String[] args) {
        MyArrayList<String> list = new MyArrayList<>();
        list.add("java");
        list.add("python");
        String ele = list.get(1);
        System.out.println(ele);

        Myclass2<String, String> list2 = new Myclass2<>();
        
        MyClass3<Animal> a  = new MyClass3<>();
        MyClass3<Dog> d  = new MyClass3<>();

    }
}

class  Animal{

}
class Dog extends Animal{

}
class Cat2 extends Animal{

}

3.3 泛型接口

3.3.1 如何写泛型接口

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

3.3.2 写一个泛型接口

package com.runa.staticdemo;

import java.util.ArrayList;

//泛型接口
public interface DataE<T> {
    void add(T t);
    ArrayList<T> getByName(String name);
}

 3.3.3 学生类StudentE

package com.runa.staticdemo;

public class StudentE {
}

3.3.4 老师类TeacherE

package com.runa.staticdemo;

public class TeacherE {
}

 3.3.5 实现类TeacherData

package com.runa.staticdemo;

import java.util.ArrayList;

public class TeacherData  implements DataE<TeacherE>{
    @Override
    public void add(TeacherE teacherE) {
        
    }

    @Override
    public ArrayList<TeacherE> getByName(String name) {
        return null;
    }
}

 3.3.6 实现学生类StudentData

package com.runa.staticdemo;

import java.util.ArrayList;

public class StudentData implements DataE<StudentE>{
    @Override
    public void add(StudentE studentE) {
        
    }

    @Override
    public ArrayList<StudentE> getByName(String name) {
        return null;
    }
}

3.4 泛型方法、泛型通配符、上下限

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 3.4.1 写一个泛型方法

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 3.4.2 一个例子

3.4.2.1 Car类
package com.runa.staticdemo;

public class Car {
}
 3.4.2.1 BMW类
package com.runa.staticdemo;

public class BMW extends Car{
}
 3.4.2.2 BENZ类
package com.runa.staticdemo;

public class BENZ extends Car {
}
 3.4.2.3 主程序
package com.runa.staticdemo;

import java.util.ArrayList;

public class TestF {
    public static void main(String[] args) {
        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);

    }
    // 这个没有限定 ,可能将其他对象传进来了
//    public static<T> void go(ArrayList<T> cars){
//
//    }

    // 这个限定只能是Car或者Car子类
//    public static<T extends Car> void go(ArrayList<T> cars){
//
//    }

//    // 通配符
//    public static void go(ArrayList<?> cars){
//
//    }

    //    // 通配符 + extends Car上限 spuer Car是下限
    public static void go(ArrayList<? extends Car> cars){

    }




}

3.5 泛型的注意事项:擦除问题、基本数据类型问题

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 3.5.1 擦除问题

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 查看编译源代码:

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言

 3.5.2 基本数据类型问题

【java】【面对对象高级4】内部类、枚举、泛型,java,java,开发语言文章来源地址https://www.toymoban.com/news/detail-612582.html

到了这里,关于【java】【面对对象高级4】内部类、枚举、泛型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java学习路程之篇三、进阶知识、面向对象高级、接口新特性、代码块、内部类、Lambda表达式、窗体、组件、事件

    概述 生成值类型响应式数据 通过 .value 值修改 生成对象和数组类型的响应式对象选用 reactive 方式比较好 html JavaScript 概述 reactive 方法根据传入的对象,创建返回一个深度响应式对象。响应式对象看起来和传入的对象一样。但是,响应式对象属性值改动,不管层级有多深,都

    2024年02月16日
    浏览(26)
  • Java重修第八天—枚举和泛型

    通过学习本篇文章可以掌握如下知识 1、枚举 2、泛型 枚举是一种 特殊类 枚举类的格式: 为什么说枚举是一个特殊类,定义一个简单的枚举如下: 将其编译成class文件后,使用IDEA打开, 结果如下 :可以看出枚举类A有私有构造器。 枚举类的第一行只能罗列一些名称, 这些

    2024年01月17日
    浏览(28)
  • JAVA SE基础《八》 ---- 面对对象编程

    目录 一、面向对象编程快速入门 二、深刻认识面向对象 三、对象在计算机中的执行原理 四、类和对象的一些注意事项 五、其他语法:this 六、其他语法:构造器 七、其他语法:封装 八、其他语法:实体JavaBean 九、面向对象编程综合案例 十、补充知识:成员变量、局部变量

    2024年02月14日
    浏览(32)
  • 【深入浅出C#】章节 5: 高级面向对象编程:泛型编程和集合类型

    高级面向对象编程是在基础面向对象编程的基础上进一步深入和拓展的一种编程范式。它强调封装、继承和多态的概念,并引入了泛型编程和集合类型等高级特性。高级面向对象编程提供了更灵活、可扩展和可复用的代码结构,能够帮助开发者构建更复杂、更高效的应用程序

    2024年02月16日
    浏览(39)
  • C/C++|物联网开发入门+项目实战|空间读写|非字符空间|返回值内部实现|嵌入式C语言高级|C语言函数的使用(2)-学习笔记(12)

    参考: 麦子学院-嵌入式C语言高级-C语言函数的使用 空间的读写 void fun(char *p); const char *p 只读空间,只为了看 char *p;该空间可能修改,几乎都要变 strcpy(); 定义:char *strcpy(char *dest,const char *src); sprintf(); 作用 1、修改 int * short * long * 2、空间传递 2.1 子函数看看空间里的情况

    2023年04月22日
    浏览(46)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象--高级篇

    首先,让我来介绍一下今天的主题。今天我们将讨论封装、反射以及单例模式。除此之外,我们不再深入其他内容。关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符。而对于反射来说,我认为它比Java简单得多,不需要频繁地获取方法和属性,而是

    2024年02月05日
    浏览(52)
  • Java开发者的Python快速进修指南:面向对象--高级篇

    首先,让我来介绍一下今天的主题。今天我们将讨论封装、反射以及单例模式。除此之外,我们不再深入其他内容。关于封装功能,Python与Java大致相同,但写法略有不同,因为Python没有修饰符。而对于反射来说,我认为它比Java简单得多,不需要频繁地获取方法和属性,而是

    2024年02月05日
    浏览(54)
  • Java单例模式的五种实现方式 懒汉式 饿汉式 双重校验锁 静态变量 静态内部类 枚举实现单例模式等

    Java单例模式是一种设计模式,用于确保一个类只有一个实例,并提供全局访问点以获取该实例。它通常用于需要共享资源或控制某些共享状态的情况下。 懒汉式:在类加载的时候就创建对象,要再调用方法时才创建对象,减少内存开销。 饿汉式:再类加载的时候就实例化对

    2024年04月27日
    浏览(27)
  • Rust语法: 枚举,泛型,trait

    这是我学习Rust的笔记,本文适合于有一定高级语言基础的开发者看不适合刚入门编程的人,对于一些概念像枚举,泛型等,不会再做解释,只写在Rust中怎么用。 枚举的定义与赋值 枚举的定义格式如下: enum 枚举名{ 值1(附加类型), 值2(附加类型),… } 其中,关联类型可以省去

    2024年02月13日
    浏览(27)
  • 第十三章,枚举与泛型例题

    例题1 结果   例题2 结果   例题3 结果     例题4 结果 例题5  结果 例题6  结果 例题7  结果 例题8  结果

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包