package innerClass;
/**
* 特点
* 1:增强封装性,通过把内部类隐藏在外部类的里面,使得其他类不能访问外部类。
* 2:增强可维护性。
* 3:内部类可以访问外部的成员。
* @author Administrator
*
*/
class InnerClassDemo {
String str="Out";
static String str1="static";
public static void outstaticStr() {
System.out.println();
}
public void outStr() {
StaticInner staticInner=new StaticInner();
staticInner.staticStr();
String c= StaticInner.strInnerSt;
String InnerC=Inner.InnerStaticelements;
System.out.println(str);
Inner inner =new Inner();
System.out.println(inner.str); inner.innerStr();
}
/**
* 实例内部类
* @author Administrator
*1:实例内部类是对象的内部类,把它当成对象看待。不能用static修饰
*2:实例内部类存在一个外部类的引用
*3: 实例内部类可以直接访问外部类的成员 用外部类.this的引用访问外部类 ,内部类静态成员直接用外部类.成员访问。
*4;外部类要创建一个内部类的对象,然后再访问内部类的成员。静态成员直接用内部类.成员。
*5:实例内部类的静态成员必须是fianl
*/
public class Inner{
String str="inner";
static final String InnerStaticelements="staticInner"; public void innerStr() {
InnerClassDemo.outstaticStr();
System.out.println(this.str);
System.out.println(InnerClassDemo.this.str); }
}
/**
*
* @author Administrator
* 内部类加上static就是静态内部类
* 静态内部类没有在堆开辟一个空间存放执行外部类的引用。
* 静态内部类可以直接访问外部类的静态成员(不需要外部类.外部类成员),通过new 外部类访问外部类的非静态类成员。
* 静态内部类可以创建非静态的成员。
*外部类可以通过new 静态内部类的对象访问内部类的非静态成员,通过静态内部类.成员的方式访问内部类静态成员
*/
static class StaticInner{
static String strInnerSt="rewre";
String srt="staticInner";
public void staticStr() {
System.out.println(new InnerClassDemo().str);
System.out.println(str1);
}
}
/**
* 局部内部类不能设置访问权限private public 等等
* 局部内部类定义在方法,使用也在方法中
* 局部内部类不能包含静态变量
* 通过访问外部的成员,静态的用外部.成员的方式,普通的就是用new 外部内的方式。
* 外部类不能访问内部类成员
*/
public void showLocalInner() {
class LocalInner{
String local="localInner";
public void localMethods(){
System.out.println(str);
} }
System.out.println(new LocalInner().local);
localMethods();
}
/**
* 匿名类 一般使用在事件开发中,安卓,GUI开发中,只使用一次,。
* 可以非静态成员通过new的外部类的方式访问外部类的成员,静态成员则通过外部类.的方式访问外部类静态成员
*
*/
Runnable run =new Runnable() { @Override
public void run() {
// TODO Auto-generated method stub
System.out.println(str); }
}; }
package innerClass;

import innerClass.InnerClassDemo.Inner;

public class TestInnerClass {
public static void main(String[] args) {
InnerClassDemo.Inner inner=new InnerClassDemo().new Inner();//其他类访问实例内部类的方式
inner.innerStr(); System.out.println(InnerClassDemo.StaticInner.strInnerSt);//在外部可以通过 外部类.内部类.内部类成员访问内部类的静态成员 }
}

java内部类简单用法的更多相关文章

  1. [Java] 内部类的用法

    package test.file; import java.io.File; import java.io.FilenameFilter; /** * 内部类的使用 * @author Frost. ...

  2. java 内部类简单总结

    在java中,一个类可以放在另一个类的内部,称之为内部类,相对而言,包含它的类称之为外部类.不过对于Java虚拟机而言,它是不知道内部类这回事的, 每个内部类最后都会被编译为一个独立的类,生成一个独立 ...

  3. java 内部类(简单使用)

    什么是内部类 1.内部类是指在一个外部类的内部再定义一个类. 2.内部类作为外部类的一个成员,依附于外部类而存在. 3.内部类可为静态,可用protected和private修饰(而外部类只能使用pu ...

  4. Java 正则表达式 简单用法

    正则表达式的具体写法网上有很多了,这里只记录在 Java 中怎么使用. java.util.regex.Matcher.java.util.regex.Pattern 主要有: String.matc ...

  5. Java 实现简单的 Socket 通信

    Java socket 封装了传输层的实现细节,开发人员可以基于 socket 实现应用层.本文介绍了 Java socket 简单用法. 1. 传输层协议 传输层包含了两种协议,分别是 TCP (T ...

  6. 简单谈一谈Java内部类的使用原因

    使用内部类的原因 学习总得知其所以然,前面的一篇文章中我有提到过关于java内部类的几种用法以及一些示例,但是不明白内部类具体可以做什么,显然学习起来很渺茫,今天的文章简单说一说使用内部类的几个原因, ...

  7. JAVA使用Logback发送日志到控制台、文件、ELK的最简单用法

    一.简述 本文讲JAVA使用Logback发送日志到控制台.文件.ELK的最简单用法. 二.教程 1.新建pom.xml项目引入下列依赖: <dependencies> <!--Be ...

  8. java项目中ehcache缓存最简单用法

      java项目中ehcache缓存最简单用法: 1.下载ehcache-core-2.4.3.jar复制到项目的lib目录下 2.新建ehcache.xml文件,放置在项目src目录下的resour ...

  9. JAVA 内部类 (一)

    可将一个类定义置入另一个类定义中.这就叫作“内部类”.内部类对我们非常有用,因为利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类里的“可见性”.然而,我们必须认识到内部类与以前讲述的 ...

随机推荐

  1. Python基础00 教程

    Python: 简明 Python 教程 廖雪峰Python3教程 Python快速教程 (手册) 爬虫: 汪海的实验室:Python爬虫入门教程 静觅: Python爬虫学习系列教程 Flask: ...

  2. JS对象与原型

    一. JS的对象 1.1 创建对象的几种方式 1.1.1 通过字面量创建对象 在js中,一对{} 其实就是一个对象 var person = { name: "tom", age: ...

  3. 王颖奇 201771010129《面向对象程序设计(java)》第四周学习总结

    实验四 类与对象的定义及使用 实验时间 2018-9-20 1.目的与要求 学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定义类的基本使用方法,熟悉Math ...

  4. JAVA知识总结(二):封装

    时隔近一年,我突然想起来这个文章还没有发完,所以就继续开始写.也不知道自己上次写到哪里了,不管了这里从面向对象的三个特性说起. 类和对象 在这之前,我们先了解什么是对象,已经什么是面向对象?对象:万物 ...

  5. 解决anaconda与pycharm冲突导致import无法使用

    解决annacode与python冲突: 一.File->Setting-> 点击Add-> 然后就完美解决 二.记得重启,检查创建的项目是右键python package-> ...

  6. [ACdream 1212 New Year Bonus Grant]贪心

    题意:员工之间形成一棵树,上级可以给下级发奖金,任何一个人最多可以给一个下级发,并且发了奖金后就不能接受奖金.求总共最多可以产生多少的奖金流动 思路:每次选择没有下级并且有上级的员工a,令它的上级为b ...

  7. javascript操作字符串间隔显示随机颜色

    参考了另一篇文章 https://www.cnblogs.com/zjfree/p/11584177.html,原理在这篇文章已经有详细描述了. 然后结合自己的一些js基础,当然改成jquery也可以 ...

  8. 单线程和多线程执行对比—Python多线程编程

    单线程和多线程执行对比 本章使用递归求斐波那契.阶乘与累加函数的执行来对比单线程与多线程: 斐波那契.阶乘与累加(mtfacfib.py): ​ import threading from time ...

  9. web2

    0x01 <?php $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; funct ...

  10. 2018-06-27 jq文档处理与jq对象属性操作

    jQ文档处理: 内部插入 A.append(B) ->把B后追加到A内部中 B.appendTo(A) ->把B后追加到A内部中 A.prepend(B) ->把B后追加到A内部中 ...