如果一个类要被声明为static的,只有一种情况,就是静态内部类。如果在外部类声明为static,程序会编译都不会过。在一番调查后个人总结出了3点关于内部类和静态内部类(俗称:内嵌类)

1.普通内部类:注意调用的方法【外部类不能是抽象类和接口】

//外部类
class Out {private int age = 12;//内部类class In {public void print() {System.out.println(age);}}
}public class Demo {public static void main(String[] args) {Out.In in = new Out().new In();in.print();}
}

  2.匿名内部类:注意结构======>注意 这个父类构造器可以是 抽象类

new 父类构造器(参数列表)|实现接口()    {    //匿名内部类的类体部分    }

  匿名内部类调用两种方式

package lianxi;public class Lianxi {public static void main(String[] args) {/*====>这种构造方法可以实现父类中没有的方法实现调用* new Dongwu() {public void xiuxi() {System.out.println("看看这个地方");};public void xiuxi1() {System.out.println("看看这个那地方");};}.xiuxi1();*/Dongwu d = new Dongwu() {//这种方法只能对外类的方法进行重写  不然调用的时候会报错public void xiuxi() {System.out.println("看看这个地方");};};d.xiuxi();}
}abstract class Dongwu{public static int age = 10;public void chi() {System.out.println("吃肉");}abstract void xiuxi();
}class Dog extends Dongwu{public void xiuxi() {System.out.println("娱乐项目"+Dongwu.age);}public void wan() {System.out.println("娱乐玩项目"+Dongwu.age);}}

  3.静态内部类=====>注意调用方法

class Out {private static int age = 12;static class In {public void print() {System.out.println(age);}}
}public class Demo {public static void main(String[] args) {Out.In in = new Out.In();in.print();}
}

  4.方法内部类(局部内部类)====》了解 就可   据说不常用

方法内部类 中不能用限制符修饰(如 public)

class Out {private int age = 12;public void Print(final int x) {class In {public void inPrint() {System.out.println(x);System.out.println(age);}}new In().inPrint();}
}public class Demo {public static void main(String[] args) {Out out = new Out();out.Print(3);}
}

  5.

在上面的代码中,我们将内部类移到了外部类的方法中,然后在外部类的方法中再生成一个内部类对象去调用内部类方法

如果此时我们需要往外部类的方法中传入参数,那么外部类的方法形参必须使用final定义

至于final在这里并没有特殊含义,只是一种表示形式而已【这个地方我没遇到过,以后遇到再说【自己测试过几次反正不用final】】

6.内部内传值同样是给内部类定义一个方法 间接改变其他参数

new ActionListener(){private String innerStr;@Overridepublic void actionPerformed(ActionEvent arg0) {             jl.setText(innerStr);}public ActionListener accept(String str) {this.innerStr = str;return this;}}.accept(innerString);

  

  

转载于:https://www.cnblogs.com/ordinaryk/p/8143777.html

java类 (二):内部类相关推荐

  1. java类二次加载_深入理解java之类加载器

    一.类与类加载器 类加载器:实现加载阶段的第一步,通过一个类的全限定名来将这个类的二进制字节流加载进jvm. 类与类加载器:任意一个类唯一性都是由它本身和加载它的类加载器确定,两个类是否相等在它们是由 ...

  2. Java学习笔记二十:Java中的内部类

    Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...

  3. java嵌套类与内部类

    一.嵌套类(Nested Classes) 使用嵌套类减少了命名冲突,一个内部类可以定义在一个类中,一个方法中甚至一个表达式中. (1)定义 A nested(嵌套) class is any cla ...

  4. Java中的内部类和匿名类

    内部类 Java中的类有两种重要的成员,即成员变量和方法.其实Java还允许类有一种成员,即在一个类中声明另一个类,这就是内部类,而包含内部类的类叫做外嵌类. 内部类和外嵌类之间的关系如下: 1.内部 ...

  5. java 为什么有匿名类_全面了解Java中的内部类和匿名类

    Java内部类(Inner Class),类似的概念在C++里也有,那就是嵌套类(Nested Class),乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了 ...

  6. 【java开发系列】—— 嵌套类与内部类

    嵌套类与内部类在java中使用的很广泛,为了避免难以理解,这里用了几个小例子,说明它的用法. 嵌套类与内部类的结构如下图 静态嵌套类 静态嵌套类,是一种在类之外声明的嵌套类,由于是静态的,所以不经过初 ...

  7. java类作用域标识符_java入门 (二) 标识符、数据类型、类型转换、变量、常量、作用域...

    java入门(二) 标识符 数据类型 类型转换 变量.常量.作用域 本次笔记引用B站:狂神说,虽然早就会了,现在回头来敲下基础,加深印象 1.标识符: java所有的组成部分都需要名字.类名丶变量名丶 ...

  8. java类修饰词和内部类详解

    java类修饰词和内部类详解 控制属性: 同一类内     同一包内      子类     所有类 public            可             可         可       ...

  9. java/c++中内部类、匿名类

    1.java中的内部类: class Outside{private String nameString ;private int age;Outside(){}Outside(String str_ ...

  10. Java 线程 - 基础及工具类 (二)

    Java 并发系列文章 Java 线程 - 并发理论基础(一) Java 线程 - 基础及工具类 (二) Java 线程 - 并发设计模式 (三) Java 线程(二) 通用的线程生命周期 Java ...

最新文章

  1. 当DiscuzNT遇上了Loadrunner(中)
  2. 使用mybatis向oracle数据库插入数据异常
  3. Struts自定义拦截器拦截器工作原理
  4. Kuroni and Impossible Calculation CodeForces - 1305C(鸽巢原理)
  5. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例
  6. 配置ISCSI客户端(LINUX)
  7. 中标麒麟共享win7打印机_Win7系统添加网络共享打印机
  8. python的paramiko模块
  9. linux服务器备份,Linux服务器上如何备份
  10. flash builder java_如何在具有Java 1.7的OSX上运行FlashBuilder 4.7
  11. 数据分析法、数据分析方法论总结
  12. 浅谈软件需求分析中的参与者
  13. 洛谷【P1195】口袋的天空
  14. mysql参数之max_connect_errors
  15. 微信小程序——天气查询
  16. 对不起,我们公司不招35岁的人
  17. Vue子传父详细教程
  18. 【戴嘉乐】IPFS伴侣:一个对IPFS资源管理更加便捷的浏览器插件
  19. python自动化之excel文件操作
  20. java怎么创建二进制文件_如何为Java应用程序创建本机二进制文件?

热门文章

  1. 必备9种能力、9种手段、9种心态
  2. UCenter密码算法规则和生成方法
  3. 如何借助log4j把日志写入数据库中
  4. 判断给定的IP地址是否是内网IP
  5. NGINX配置之二: nginx location proxy_pass 后面的url 加与不加/的区别.
  6. Javascript如何深拷贝对象
  7. vue路由(router)设置:父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失
  8. Process Explorer 进程管理利器常用功能(中)
  9. 微服务学习之01父工程创建【Hoxton.SR1版】
  10. linux设置r镜像,一劳永逸,R的个性化默认配置