1、什么是内部类

所谓的内部类,就是一个类定义在另一个类的里面。

代码:

class  A

{        int i;

class B

{

int  j;

int func(){

int result = i +j;

return result;

}

}

}

注意:内部类可以随意使所在类的成员变量和方法,饭这并不意味着是继承关系。

这个类编译后生成的编译文件有如下两个:

A$B.class

A.class

2、内部类的使用方法

看代码,用到上述的A.java

class Test

{

public static void main(String args[ ])

{

A a = new A();             //生成外部类对象

A.B b = new A().new B();    //生产内部类对象

a.i = 3;

b.j = 2;

System.out.println(b.func()); //执行结果为 5

}

}

3、匿名内部类的使用方法

(1 )常规写法:

//定义一个接口A
interface A
{
    public void doSomething();
}
------------------------------------------------------->
//接口A的实现方类
class AImpl implements A
{
    public void doSomething(){
        System.out.println("A接口的实现类 ");
    }
}
------------------------------------------------------->
//定义一个B类,在其中调用A接口,使用接口就要使用其实现类AImpl
class B
{
    public void func(A a)
    {
        System.out.println("B类的func函数");
        a.doSomething();
    }
}
------------------------------------------------------->
//测试类

class Test
{
    public static void main(String args[]){
        AImpl al  = new AImpl();
        A a = al;
        B b = new B();
        b,func();
    }
}
------------------------------------------------------>
(2 )匿名内部类的写法:
class Test
{
    public static void main(String args[]){
        AImpl al  = new AImpl();
        A a = al;
        B b = new B();
        b,func(new A(){    //没有名字的类,叫做匿名类,且在内部,所以叫内部类。
            public void doSomething(){
            System.out.println("A接口的实现类 ");
        });
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java for Anfroid 学习之 内部类的更多相关文章

  1. Java编程思想学习(八) 内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类的定义是简单的,但是它的语法确实很是复杂,让人不是很好理解.下面就内部类做一个小结. 一.内部类的分类 总的来讲内部类分为普通内部类,匿 ...

  2. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  3. Java编程风格学习(二)

    二.格式规范 在上一篇的Java编程风格学习(一)中我们讲述了在Java编码中的一般原则,虽然这些原则并不涉及具体的代码规范,但是这些原则却是我们在Java开发过程中所应该遵循的规范与思想.今天我们将 ...

  4. “全栈2019”Java第九十三章:内部类应用场景(迭代器设计模式)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第九十一章:内部类具有多态特性吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. Java 单向链表学习

    Java 单向链表学习 链表等同于动态的数组:可以不同设定固定的空间,根据需要的内容动态的改变链表的占用空间和动态的数组同一形式:链表的使用可以更加便于操作. 链表的基本结构包括:链表工具类和节点类, ...

  7. 《深入理解Java虚拟机》学习笔记

    <深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

随机推荐

  1. 关于awk的范围模式功能问题

    关于awk的范围模式功能问题 man awk中这样写到 The pattern1, pattern2 form of an expression is called a range pattern. ...

  2. 【转】rinex

         RINEX(Receiver INdependent Exchange)格式是与接收机无关的数据交换格式,该格式采用文本文件存储数据,数据记录格式与接收机的制造厂商和具体型号无关.RINEX ...

  3. 第三方模块paramiko的使用

    "Paramiko" is a combination of the Esperanto words for "paranoid" and "frie ...

  4. 一个特殊的List去重问题的解决方案

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7039842.html 场景描述:公司新活动,需要在活动页面显示指定利率的四种投资项目,并且 ...

  5. 使用document.execCommand复制内容至剪贴板

    API https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand 兼容性 http://caniuse.com/#se ...

  6. mysql 删匿名帐户

    mysql默认安装,带有匿名帐户 删除它很简单 登录进入msyql并执行以下三行语句: use mysql; delete from user where user=''; flush privile ...

  7. python中的线程

    1.线程的创建 1.1 通过thread类直接创建 import threading import time def foo(n): time.sleep(n) print("foo fun ...

  8. 初识RESTful

    前言:两个月没写博客了,我真是太贱了哈哈.先简单说下我这两个月做了啥吧.8月26号从BIGO离职,回学校准备秋招.9月初时才发现已经错过秋招内推时间,其实秋招内推拿offer是有较大概率的.9月才开始 ...

  9. Xposed 初尝

    1.初次使用xposed,之前直至其名,不闻其用. 2.相关引用配置上图 build.gradle配置,如下: dependencies { compile fileTree(include: ['* ...

  10. selenium headlesschrome下设置最大窗口模式

    做微博登录的时候,用selenium的chrome界面模式,可以用下面方式显示最大窗口: from selenium.webdriver.chrome.options import Options c ...