Java内部类手机专卖店_JAVA——内部类的那些事儿
obj3.func();
//3.2 访问静态内部类的静态方法(通过类名访问)
Outer.StaInner.staFunc();
//4 局部内部类访问局部变量
Outer obj4 = new Outer();
obj4.local();
//5 匿名内部类
Outer obj5 = new Outer();
obj5.anonymous();
//6 匿名内部类作为参数
asPara(new AbstractClass() {
public void func() {
System.out.println(匿名内部类作为参数);
}
});
}
public static void asPara(AbstractClass ac) {
ac.func();
}
}
//抽象类:作为匿名内部类存在的前提(前提:存在一个类(具体类或者抽象类)或者接口)
abstract class AbstractClass{
public abstract void func();
}
//外部类
class Outer{
private String hello = 内部类可以访问外部类数据成员(包括私有成员);
//内部类------------------------------
class Inner{
public void func() {
//内部类获取了外部类的引用Outer.this
System.out.println(Outer.this.hello);
System.out.println(hello);
}
}
//内部类私有---------------------------
private class PriInner{
public void func() {
System.out.println(内部类私有,外部类提供public方法访问);
}
}
//外部类提供public方法访问
public void providePublicFunc() {
PriInner pi = new PriInner();
pi.func();
}
//静态内部类--------------------------
static class StaInner{
//非静态方法
public void func() {
System.out.println(静态内部类的非静态方法);
}
//静态方法
public static void staFunc() {
System.out.println(静态内部类的静态方法);
}
}
//局部内部类---------------------------
//外部类中的成员方法local()
public void local() {
final String str = 局部内部类访问局部变量;
class LocInner{
public void func() {
//访问的局部变量要用final修饰,但jdk1.8不用
System.out.println(str);
}
}
//局部内部类只能在方法中访问
LocInner li = new LocInner();
li.func();
}
/*匿名内部类(是一个内部类) 前提:存在一个类(具体类或者抽象类)或者接口
* 本质:继承了该类或者实现该接口的一个子类匿名对象
* */
//外部类中的成员方法anonymous()
public void anonymous(){
new AbstractClass() {
public void func() {
System.out.println(重写抽象类中func()抽象方法);
}
}.func();
/*
相当于一个继承了AbstractClass的子类的一个对象obj,然后,obj.func();
思考1:若AbstractClass中还有一个抽象方法func1(),怎么调用?
方法:
AbstractClass ac = new AbstractClass() {
public void func() {
System.out.println(重写抽象类中func()抽象方法);
}
public void func1(){
System.out.println(重写抽象类中func1()抽象方法);
}
}
ac.func();
ac.func();
思考2:若匿名内部类中有自己定义的方法myFunc(),how?
思路:向下强转?but子类的类名是什么?
所以,匿名内部类针对一个方法比较好
* */
}
}
运行结果:
Java内部类手机专卖店_JAVA——内部类的那些事儿相关推荐
- Java内部类手机专卖店_Java(20)内部类
内部类 一个定义在另一个类里面的类称为内部类.内部类可以分为四种形式:成员内部类, 成员内部类 内部调用外部的属性和方法 成员内部类可以无条件访问外部类的所有成员属性和方法. 其他类(例子中的RunC ...
- Java内部类手机专卖店_Java:内部类
看Thinking in Java中内部类的一章,有内部类和静态内部类,书中把后者叫做嵌套类.常见用法实例: 一般内部类(非静态) 1 public classInnerClassTest {2 pu ...
- java内部类的作用_java 内部类的好处和缺点(上)
一.什么是内部类 内部类是指在一个外部类的内部再定义一个类,类名不需要和文件夹相同.内部类可以声明 public .protected .private 等访问限制,可以声明为 abstract的供其 ...
- java游戏有牧师_JAVA内部类是怎么玩儿的
内部类一共分为:成员内部类,局部内部类,静态嵌套类,匿名内部类. 1. 成员内部类 最普通的内部类 class Outter { private int age = 12; class Inner { ...
- java内部类外部类_Java内部类:如何在内部类中返回外部类对象
Nasted Class 的介绍,请详见参考 今天讨论的不是不是内部类的概念,而是具体使用的一个场景-如何在内部类中返回外部对象 (孤猪:我在程序里也碰到过一次这样的状况,非静态内部类可以直接调用外部 ...
- java内部类实现方式_Java内部类详解
一 内部类是什么 Java类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类.根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种. Java为什 ...
- java中局部内部类_Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类...
一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...
- java 内部类 加载_Java 内部类基础介绍
看Concurrent包源码时,其中存在大量的内部类使用,所以特地抽出一篇来介绍内部类.内部类其实是Java 经常用到的一个小的知识点. 内部类: 在一个类内部定义的类叫做内部类,根据内部类在外部类中 ...
- java 内部类 加载_java内部类及类加载顺序
package demo; import demo.Enclosingone; import demo.Enclosingone.InsideOne; import demo.Enclosingone ...
最新文章
- 京东员工怒怼公司:每天工作到很晚甚至凌晨,你跟我说这是幸福?
- 微信公众平台开发中-SAE不支持XStream框架的解决方案
- 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?
- 还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波
- 简历的正确发音和习惯用法
- Java中利用MessageFormat对象实现类似C# string.Format方法格式化
- zabbix 配置mysql_zabbix 配置mysql监控
- 字更大、页面更简单 淘宝长辈模式正式上线
- 激光slam_激光SLAM与视觉SLAM的特点
- 域domain user用户对本地NTFS磁盘的写入权限问题
- C++输出九九乘法表
- 4月第三周网络安全报告:发现放马站点域名437个
- docker镜像下载太慢
- python导入win32com.client出错
- java坦克大战练习。java基础项目。巩固java基础部分。
- 谈谈编程器软件开发与设计
- App个人信息保护管理暂行规定即将出台
- 一个简单光栅器的实现(五) 光栅化阶段
- Python3.6+jieba+wordcloud 爬取豆瓣影评生成词云
- 解决黑苹果和Windows双系统时,时钟不同步的问题