(五)Java入门--内部类
2017-11-13 21:57
204 查看
一、内部类访问特点
内部类可以直接访问外部类的内容,但是外部类要想访问内部类,必须建立内部类的对象。二、内部类的修饰符
内部类可以修饰为static,那里面访问外部类的变量必须是static的。1、若内部类不加static,则相当于外部类的成员。(Out.In a = new Out().new In();)
2、若内部类加上static,外部类就不要建立对象进行访问了。(Out.In b = new Out.In(); )
3、若内部类中的函数是static(内部类必须是static),那内部类和外部类都不需要建立对象了。(Out.In.fun(); )
4、如果在外部类和内部类均有同样变量名的变量,则想在内部调用外部的变量,需要使用外部类名.this.
5、内部类在局部位置上只能访问局部中被final修饰的局部变量。(内部类在外部类的成员函数中,被称作局部位置)。
class Out { private static int num = 20; //静态内部类访问外部变量必须是静态的。 static class In { //静态内部类 void show() { System.out.println("In...." + num); } static void fun() { System.out.println("fun...." + num); } } } public class NeiBU { public static void main(String[] args) { //内部类非静态,相当于外部类的成员 // Out.In a = new Out().new In(); // a.show(); //内部类是静态的,就不要建立外部的对象了 Out.In b = new Out.In(); b.show(); //静态内部类的函数是静态的,不需建立内部和外部对象,直接访问。 Out.In.fun(); } }
三、匿名内部类
如果内部类存在继承父类或者实现接口,可以不用内部类去创建对象,直接将所需的功能转化成匿名内部类的方法。abstract class InFather { //抽象父类 abstract void show1(); abstract void show2(); } class Out1 { //常规对象建立,并调用方法,有名字 /* class InSon extends InFather{ //继承并实现父类方法 void show1(){ System.out.println("show1...."); } void show2(){ System.out.println("show2...."); } }*/ public void method() { /*InSon a = new InSon(); //建立对象调用方法 a.show1(); a.show2();*/ InFather b = new InFather() { void show1() { System.out.println("show1...."); } void show2() { System.out.println("show2...."); } }; //InFather() {....} 等于 子类(InSon())对父类的实现 //new InFather() {....} 等于 创建子类对象 b.show1(); b.show2(); } } public class NoNameIn { public static void main(String[] args) { //匿名对象调用方法 new Out1().method(); } }
相关文章推荐
- Java入门基础_学习笔记[5]_接口与内部类
- java 从零开始,学习笔记之基础入门<内部类>(十四)
- java语言基础入门——内部类的介绍
- Java入门 之 接口和内部类
- java中的内部类(J2SE入门9)
- java入门教程-5.2Java静态内部类、匿名内部类、成员式内部类和局部内部类
- JAVA快速入门-内部类
- 从C#到Java入门指引之三——内部类
- 黑马程序员_java入门_内部类
- java入门代码----初识内部类
- Java 入门 七 (Java 内部类)
- 【Java入门提高篇】Day8 Java内部类——匿名内部类
- java入门9-形式参数,导包,修饰符,内部类
- 从C#到Java入门指引之三——内部类
- Java入门_内部类
- java入门学习(12)—内部类的定义及使用初步
- Java Lambda表达式入门
- 【新技术,学习、商业均可】HTML5 全新高大尚后台 bootstrap springmvc mybatis java企业级通框架源码入门
- JAVA学习--内部类
- 从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体