当前位置: 首页 > news >正文

Android java中内部类的使用

一.成员内部类

实验1:成员内部类


class Outer {private int a = 10;class Inner {public void printInfo(){System.out.println("a = "+a);}}}public class InnerDemo {public static void main(String args[]) {Outer o = new Outer();Outer.Inner i = o.new Inner();i.printInfo();}
}

运行:

root@ubuntu:/home/topeet/guyilian# javac InnerDemo.java 
root@ubuntu:/home/topeet/guyilian# java InnerDemo
a = 10

特点如下:

1.内部类可以直接访问外部类的所有成员(成员变量和成员方法),包括private和static所修饰的。但是外部类不能直接访问内部类成员,需要通过预先创建的内部类对象去访问。

2.成员内部类可以使用权限修饰符(private、default、protected、public)任意进行修饰。

3.成员内部类是默认包含了一个指向外部类对象的引用。要创建成员内部类对象,必须先创建一个外部类对象。

二.静态内部类

实验2:静态内部类

使用static修饰的成员内部类我们称之为静态内部类。

class Outer {private static int a = 10;   //静态内部类访问的变量也要用static修饰static class Inner {  //静态内部类要用static修饰public void printInfo(){System.out.println("a = "+a);}}}public class InnerDemo {public static void main(String args[]) {//Outer o = new Outer();//Outer.Inner i = o.new Inner();Outer.Inner i = new Outer.Inner();i.printInfo();}
}

 运行:

root@ubuntu:/home/topeet/guyilian# javac InnerDemo.java 
root@ubuntu:/home/topeet/guyilian# java InnerDemo
a = 10

特点如下:

1.静态内部类可以访问外部类的静态成员,不能访问非静态成员,内部类还可以定义静态成员。

2.静态内部类是4种类中唯一一个不依赖于外部类对象的引用的内部类,静态内部类可以被其他类直接访问和实例化,不需要先实例化外部类。

三.匿名内部类

匿名内部类没有显式的类名,通常在创建对象的时候定义,可以直接在表达式中使用,不需要单独声明一个命名的类。

实验:匿名内部类

interface A {public void printInfo();
}class B implements A {public void printInfo() {System.out.println("Hello, world!");}
}public class Anony {public static void main(String args[])	{testFunc(new B());testFunc(new A(){public void printInfo() {System.out.println("Hello, world2!");}});}public static void testFunc(A a) {a.printInfo();}
}

运行:

root@ubuntu:/home/topeet/guyilian# javac Anony.java 
root@ubuntu:/home/topeet/guyilian# java Anony
Hello, world!
Hello, world2!

 特点

1.匿名内部类可以访问外部类所有的变量和方法,不能在匿名内部类中修改外部局部变量。

2.匿名内部类默认包含了外部类对象的引用。

3.使用匿名内部类还有个前提条件必须继承一个父类或实现一个接口

4.匿名内部类只能使用一次,它通常用来简化代码编写。

http://www.lryc.cn/news/306213.html

相关文章:

  • llm的inference(二)
  • pytorch -- torch.nn.Module
  • Microsoft Edge 越用越慢、超级卡顿?网页B站播放卡顿?
  • XGB-9: 分类数据
  • FreeRTOS学习第8篇--同步和互斥操作引子
  • c++STL容器的使用(vector, list, map, set等),c++STL算法的理解与使用(sort, find, binary_search等)
  • 选择VR全景行业,需要了解哪些内容?
  • 830. 单调栈
  • H5 个人引导页官网型源码
  • 【Linux】部署前后端分离项目---(Nginx自启,负载均衡)
  • WPF Style样式设置
  • 【STM32】软件SPI读写W25Q64芯片
  • 普通中小学校管理信息系统V1.1
  • 中国水果采摘机器人行业市场研究及发展趋势分析报告
  • Linux多进程与信号
  • Self-attention与Word2Vec
  • 【Flutter/Android】运行到安卓手机上一直卡在 Running Gradle task ‘assembleDebug‘... 的终极解决办法
  • 医疗实施-客户需求分析
  • 调度服务看门狗配置
  • AI时代 编程高手的秘密武器:世界顶级大学推荐的计算机教材
  • 【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)
  • LeetCode 0235.二叉搜索树的最近公共祖先:用搜索树性质(不遍历全部节点)
  • 【Prometheus】概念和工作原理介绍
  • 四川易点慧电子商务有限公司抖音小店:可靠之选,购物新体验
  • SpringBoot自带的tomcat的最大连接数和最大的并发数
  • TLS1.2抓包解析
  • 使用两个队列实现栈
  • 通过ffmpeg实现视频背景色替换
  • 后轮位置反馈控制与算法仿真实现
  • 实战 vue3 使用百度编辑器ueditor