JAVA教程 从入门到精通 Day12

Go语言从入门到精通:一站式学习指南 Go语言是由Google的Rob Pike、Ken Thompson和Robert Griesemer设计的编程语言。Go语言旨在提供一种简洁、快速、并且易于并发编程的解决方案。Go语言的设计理念之一是“简单就是美”,它抛弃了传统编程语言中的一些复杂特性,如继承、多态等,而通过一些现代特性(如goroutine并发机制)弥补这些限制。Go语言以其简单、并发、性能优异的特点,成为了开发者的首选语言之一。通过本文的介绍,从Go的基础语法到进阶应用,你应该对Go有了一个全面的了解。如果。 阅读详情

第五章 内部类

5.1 内部类

内部类 : 了解
类中定义类
外部类 内部类

分类:
    成员内部类
    私有内部类
    静态内部类
    局部内部类
    匿名内部类 : 重点
1、成员内部类

成员内部类

  • 内部类定义在外部类的成员位置
  • 具有类的特点 可以继承其他父类 实现其他接口
  • 具有成员的特点 可以被成员修饰符修饰

注意:

  • 成员内部类中不能定义静态内容 除了静态的常量
  • 成员内部类中可以直接使用外部类的成员 包括私有的
  • 外部类中可以通过成员内部类的对象调用成员内部类的成员
  • 通过外部类对象去创建成员内部类的对象 通过成员内部类对象调用成员内部类的成员
package wang;

public class Inner {
    //成员:类中方法外
    //成员变量
    private int i=1;
    static int j=2;

    //成员内部类
    public class Inner01{
//        成员变量
        int a=100;
        static final int b=200;

//        成员方法
        public void testInner01(){
            System.out.println(i);
            System.out.println(j);
            System.out.println(a);
            System.out.println(b);
        }
    }

//    成员方法
    public void outer(){
        Inner01 sc=new Inner01();
        System.out.println(sc.a);
    }
}

package wang;

//测试类
public class Over {
    public static void main(String[] args) {
//        测试使用成员内部类中的成员
        Inner sd=new Inner();
        Inner.Inner01 sf=sd.new Inner01();
        sf.testInner01();
    }
}

2、区分同名变量问题
package wang;
//区分同名变量问题
public class Inner {
        int i=1;
        static int b=5;

        class Inner01{
            int i=2;
            public void test(){
                int i=3;
//                调用外部类成员变量i=1
                System.out.println(Inner.this.i);
//                调用内部类的成员变量i=2
                System.out.println(this.i);
//                调用局部变量i
                System.out.println(i);
            }
        }
    }


package wang;

//测试类
public class Over {
    public static void main(String[] args) {
        Inner.Inner01 sc=new Inner().new Inner01();
        sc.test();
    }
} 
3、私有内部类

私有内部类:

  • 被private关键字修饰的成员内部类
  • 私有内部类中可以直接使用外部类的成员,包括私有的
  • 在外部类中通过私有内部类的对象调用私有内部类的成员,包括私有的
  • 私有内部类只能在当前外部类中使用,其他类中无法使用
package wang;

public class Class004_Outer {
    private int i = 1;
    private static int j = 2;

    //私有内部类
    private class Inner{
        private int a = 100;
        private static final int b = 200;

        public void test(){
            System.out.println("私有内部类的成员方法");
            System.out.println(a);
            System.out.println(b);

            System.out.println(i);
            System.out.println(j);
        }
    }

    //外部类的成员方法
    public void outer(){
        Inner in = new Inner();
        System.out.println(in.a);
        in.test();
    }
}
4、静态内部类

静态内部类

  • 静态内部类中可以定义静态内容
  • 在静态内部类中可以直接使用外部类的静态内容 需要通过外部类对象使用外部类的成员
  • 在外部类中可以通过静态内部类的类名调用静态内部类的静态内容 可以通过静态内部类的对象调用其成员内容
  • 在其他类中可以通过外部类类名找到静态内部类 new 静态内部类对象访问其成员 通过静态内部类类名方法其静态内容
  • Class005_Outer.Inner in3 = new Class005_Outer.Inner();
public class Class005_Outer {
    private int i = 1;
    private static int j = 2;

    //静态内部类
    static class Inner{
        int a = 100;
        static int b = 200;

        //成员方法
        public void test(){
            System.out.println(b);
            System.out.println(a);

            System.out.println(j);
            System.out.println(new Class005_Outer().i);
        }

        //静态方法
        public static void testStatic(){
            Inner in = new Inner();
            System.out.println(in.a);

            System.out.println(b);

            System.out.println(new Class005_Outer().i);
            System.out.println(j);
        }
    }

    //外部类的成员方法
    public void outer(){
        System.out.println(Inner.b);
        Inner.testStatic();

        new Inner().test();
    }
}
5、局部内部类
  • 定义在局部位置
  • 局部内部类中可以定义成员内容 不可能定义静态内容除了静态的常量
  • 只能在局部内部类所在的方法中通过对象访问成员
  • 在局部内部类中可以使用所在方法中的局部变量 可以使用外部类的成员
  • 如果在局部内部类中使用所在方法中的局部变量(参数) 要求局部变量被final修饰 如果jdk1.8以上版本默认被final修饰
public class Class006_Outer {
    String str = "外部类str";
    public void test(int i){
        //局部
        //int i = 1;

        //局部内部类
        class Inner{
            int a = 100;
            static final int b = 200;

            public void testInner(){
                System.out.println("局部内部类的成员方法");
                System.out.println(i);
                System.out.println(str);
            }
        }

        //i = 6;
        System.out.println(Inner.b);
        Inner in = new Inner();
        System.out.println(in.a);
    }
}
6、匿名内部类

匿名内部类 :

  • 作用 : 简化实现类|子类,没有自己类本身作用的实现类|子类

匿名内部类对象 :

  • 实现类|子类+创建对象

​ new Smoke(){ //实现类类体|抽象类的子类类体

​ @Override

​ public void smoking() {

​ System.out.println(“边吸烟边吐烟圈…”);

​ }

​ }

public class Class007_Outer {
    public static void main(String[] args) {
        //实现类对象
        Demo demo = new Demo();
        demo.smoking();

        //匿名内部类对象
        //1. 匿名对象 : 只能在当前位置使用一次
        new Smoke(){ //实现类的类体 | 匿名内部类的类体
            @Override
            public void smoking() {
                System.out.println("一边打游戏一边吸烟...");
            }
        }.smoking();


        //2.引用指向匿名内部类对象
        //接口多态 : 接口引用调用的为接口中定义的成员
        Smoke s = new Smoke(){

            @Override
            public void smoking() {
                System.out.println("一边上课一边抽烟");
            }
        };
        s.smoking();
        s.smoking();
        s.smoking();

        //3.匿名内部类对象作为方法的实参
        test(new Smoke() {
            @Override
            public void smoking() {
                System.out.println("xxxxxxxx");
            }
        });
    }

    public static void  test(Smoke smoke){
        smoke.smoking();
    }

}

interface Smoke{
    void smoking();
}

class Demo  implements Smoke{
    @Override
    public void smoking() {
        System.out.println("边吸烟边吐烟圈...");
    }
}

5.2 Lambda 表达式

lambda表达式

作用 : 简化匿名内部类对象

前提 : 函数式接口

函数式接口 : 接口中只有一个必须被重写的抽象方法

强制检查是否为函数式接口 : @FunctionalInterface

语法 : ()->{}

  • () : 接口中抽象方法的参数列表
  • -> : lambda符号|箭头函数
  • {} : 重写方法的方法体
public class Class001_Lambda {
    public static void main(String[] args) {
        //匿名内部类
        /*Swim s = new Swim(){

            @Override
            public void swimming() {
                System.out.println("一边喝水一边游泳...");
            }
        };*/

        //Lambda写法1 : ()->{}
        /*Swim s = ()->{
            System.out.println("一边换气一边游泳...");
        };*/

        //Lambda写法2 : 如果方法体语句只有一句,前后的{}可以省略
        //Swim s = ()->System.out.println("一边嘻嘻笑一边游泳...");

        //Lambda写法3 : 如果方法存在参数,参数的类型可以省略
       // Swim s = (name,age)->System.out.println(name+"一边嘻嘻笑一边游泳...");

        //Lambda写法4 : 如果参数只有一个,前后的()可以省略
        //Swim s = name->System.out.println(name+"一边嘻嘻笑一边游泳...");

        //Lambda写法5 : 如果lambda体语句只有一句,并且为return语句,前后的{}与return关键字可以一起省略
        Swim s = age->age>18;

        System.out.println(s.swimming(18));;


    }
}

@FunctionalInterface
interface Swim{
    boolean swimming(int age);
    //void drinkWater();
}

interface Run{
    void run();
}
接口,内部类,抽象类概念和区别 NULL 博文链接:https://zhycaf.iteye.com/blog/980782 立即下载

相关推荐

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

20220726学习内容 接口

接口

weixin_51183285的博客 272

【暂时完结】Prescan学习笔记

Prescan学习记录1. Prescan基础知识1.1 Conventions·坐标1.2 Road segment·道路片段1.2.1 让一个路段连接其他两个路段1.2.2 配置车道线1.2.3 Road marking·道路标志1.3 Trajectory·轨迹1.3.1 建立一个Path·路径1.3.2 配置Speedprofile1.3.3 Synchronization of Trajectories·轨迹同步1.3.4 Multiple trajectories · 多轨迹分配 1. Pres

dreautumn的博客 1万+

Java学习日志

内部类 : 类中定义类 外部类 内部类 分类: 成员内部类 私有内部类 静态内部类 局部内部类 匿名内部类 : 重点 成员内部类 内部类定义在外部类的成员位置 具有类的特点,可以继承其他父类,实现其他接口,具有成员的特点,可以被成员修饰符修饰... 注意: 成员内部类中不能定义静态内容,除了静态的常量 成员内部类中可以直接使用外部类的成员,包括私有的 外部类中可以通过成员内部类的对象调用成员内部类的成员

XieXiao001的博客 515

从零搭建IoT数据中台:STM32+WebSocket实现边缘设备与Web端实时双向通信

本文详细介绍了如何从零搭建基于STM32和WebSocket协议的IoT数据中台,实现边缘设备与Web端的实时双向通信。通过硬件选型、协议设计、服务器搭建及安全优化,提供了一套低延迟、高并发的企业级解决方案,适用于智能农业和工业监控等场景。

tea88的博客 749

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

无法联网的情况下,dbeaver离线安装数据库驱动-clickhouse

u012831187的博客 1万+

接口 内部类

接口 内部类什么是接口接口允许多重继承声明接口的语法接口中只能定义常量和抽象方法一个类实现接口的语法类实现接口接口中常量一个对象往往有多重身份接口的特殊特征接口的作用接口和抽象类的异同点内部类内部类的作用内部类相关的设计内部类分类非静态内部类静态内部类局部内部类匿名内部类匿名内部类的使用场景匿名内部类的使用限制内部类的使用场景和好处 什么是接口 在Java中不直接支持多继承,因为会出现调用的不确定性,所以Java将多继承机制进行改良,在Java中变成了多实现。一个类只能有一个直系双亲类,一个类可以实现多个接

Liuxin2448的博客 862

2024年11月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(一)

软考高级考试包含三个科目:信息系统综合知识、系统架构设计案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午综合知识科目的选择题,同时附带参考答案、解析和所涉知识点。由于机考时题目顺序是打乱的,本文题目所标序号只为区分不代表实际顺序。综合知识。

一几文的编程学习笔记。 9280

接口和内部类

接口和内部类

xx的博客 276

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3022

SAP Group Reporting入门指南(11)--配置

这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找触发FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为贷方。这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找源FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为借方。例如,添加一个包含用于存储百分比的 FS 项的选项。这里选择的是FS项目的角色属性值,如果这里定义了,那么就从FS项目中找到FS项目角色属性值与之匹配的FS项目作为贷方。

bflyfish的博客 568

java_day12练习题

文章目录java_day12练习题练习1练习2练习3练习4练习5练习6练习7练习8练习9练习10 java_day12练习题 练习1 一、需求说明:自定义一个学生类,给出成员变量name和age,使用HashSet集合存储自定义对 象并遍历,遍历集合的时候,在控制台输出学生对象的成员变量值。要求使用两种方式进行遍历 (迭代器、增强for)。 二、当上述内容解决完毕以后,如果集合中存储的学生对象,年...

466

90. 将 SAP ABAP 内表内容本地导出成 Excel 文件

这里文件扩展名为 csv,全称是 Comma-Separated Values,意思是这种类型的文件内容,由逗号分隔。除了 ASC 之外,另一个可用的选项是 BIN,适用于 PDF,EXE 等二进制文件的导出。支持海量的输入和输出参数,我们这个简单的本地导出场景里,大部分参数都用不上。这个分隔符的添加逻辑,编写在上图红色高亮矩形框内,使用的语法是。本教程有学习者向我提问,询问如何将 ABAP 某某函数的某某输出参数的值,导出成本地 Excel 文件。把这个内表的内容,下载到本地,以本地文件的方式保存。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1743

JAVA教程 从入门到精通 Day15

JAVA基础

dlogcs的博客 376

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JAVA教程 从入门到精通 Day18

JAVA基础

dlogcs的博客 1300

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JAVA教程 从入门到精通 Day 3

JAVA 基础

dlogcs的博客 377

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JAVA教程 从入门到精通 Day17

JAVA基础

dlogcs的博客 244

JAVA教程 从入门到精通 Day 1

JAVA基础

dlogcs的博客 325

苍穹外卖学习 Day10 Day11 Day12

苍穹外卖Day10 Day11 Day12的学习

m0_74448051的博客 1407

JAVA教程 从入门到精通 Day19

JAVA基础

dlogcs的博客 801

Java入门到精通 day2

Java入门到精通 day2 关键字 数据类型: 基本数据类型 1.1 整数型 byte short int long 1.2 浮点型 float double 1.3 布尔型 boolean 1.4 字符型 char 引用数据类型 2.1 类 接口 数组 定义的注意事项: 默认整数类型为int型,需要注意定义时各数据类型的范围,从大范围定义到小范围可能会精度丢失导致出错.可以使用强转 强转:目标类型 变量名 = (目标类型)常量值或者变量值 标识符 自定义的 类名 接口名 方法名 1.1 类名:采

weixin_44850324的博客 135

java入门详细教程——day01

DOS:DOS是微软在window操作系统之前推出的一款操作系统,在我们现在的window系统中一直保留。DOS命令:DOS操作系统是命令行式的,跟我们window可视化不一样,我们需要通过命令来完成各种操作。为什么要学习DOS命令:javac.exe java.exe 直接双击不能运行 需要在DOS下进行运行。进入DOS窗口的方式:win + r打开运行窗口,输入cmd,回车。快捷进入cmd窗口方式。

Z99263的博客 913

JAVA教程 从入门到精通 Day4

JAVA 基础

dlogcs的博客 422

Java入门到精通 day1

java从入门到精通day1 软件介绍 JDK JRE JVM的区别 JDK JDK:Java Development Kits Java开发程序者必须要安装的开发工具包 JDK中包含JRE和JVM JRE Java Runtime Environment Java运行坏境 JRE包含JVM JVM Java Virtual Machine Java虚拟机 Java程序先经过编译,把我们输入的语言编译成计算机能够识别的二进制代码,然后由JVM负责启动相对应操作系统的虚拟机去"解释"给操作系统.(

weixin_44850324的博客 117

java12使用教程

Java 12 是一个非长期支持(Non-LTS)版本,于 2019 年 3 月发布,引入了一些实用的新特性和改进。

2509_93306611的博客 1476

JAVA教程 从入门到精通 Day 2

java基础

dlogcs的博客 261
上一篇: JAVA教程 从入门到精通 Day11
下一篇: JAVA教程 从入门到精通 Day13
dlogcs
博客等级 码龄7年 0粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值