内部类:

        1、内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性。
2、非静态内部类对象有着指向其外部类对象的引用 等等。

创建项目:

1、File---->New----->java  Project

2、src右键添加 New---->Package(添加一个包,命名为“成员内部类”)

3、包右键添加New----->class/interface

注: 有main(String[] agre)函数的就是运行文件,如果要作为一般类使用,将注释及main(String[] agrs)函数删除。

4、运行:找到相对应的运行文件,右键 Run as ----->java  Appliaction

一、成员内部类

因为上面已经建了一个"成员内部类"包,所以包右键添加New----->class(命名为on1)。

on1类:

public class on1 {

	class tm
{
public void show()
{
System.out.println("tt");
};
}
public void k()
{
tm t=new tm();
t.show();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new on1().k();
} }

效果图:

二、方法内部类

首先src右键添加 New---->Package(添加一个包,命名为方法内部类”),添加两个class分别命名为on1,on2.

on1类:

public class on1 {

	public void tm()
{
System.out .println("kkkkkkkkkkkk");
class t extends on2
{ }
new on2().k();
System.out.println("hhhhhhh");
}
public static void main(String[] args) {
new on1().tm();
} }

on2类:

public class on2 {

	public void k()
{
System.out.println("tttttttttt");
} }

效果图:

三、匿名内部类(Anonymous)

首先src右键添加 New---->Package(添加一个包,命名为匿名内部类”),添加两个class分别命名为on1,on2,添加一接口命名为Infot。

Infot接口:

public interface Infot {

	public void eve();
}

将on1类变成抽象类。

public abstract class on1 implements Infot{

	public void day()
{
System.out.println("学习");
} }

on2类:

public class on2 {

	public static void main(String[] args) {
//on1 t=new on1();
//t.day();
//t.eve();
//on2 k=new on2();
//k.day();
//k.eve();
Ons t=new Ons()
{
public void eve(){System.out.println("kkkk");}
};
t.eve();
t.day();
} }

效果图:

特点:

成员内部类特点:

在一个外部类的内部且方法外定义的类我们称为外部类 ,该类特点是高度内聚,不对外开放。

方法内部类(局部内部类)特点:

在一个方法内部定义的类我们通常叫做方法内部类或者局部内部类 该类特点是短暂性的,不对外的。

匿名内部类特点:

要满足匿名内部类操作在实现该类操作时必须是一个抽象类或者是一个接口,这样才能使用内部类操作,在实现一个内部类操作时,

同时是重写未实现的方法,也是高内聚的特点。

Android开发之内部类篇的更多相关文章

  1. Android开发环境搭建篇详尽的教程实例汇

    原文链接:http://android.eoe.cn/topic/android_sdk 一.android开发环境搭建图文教程整理篇: 1.Android开发环境搭建全程演示(jdk+eclip+a ...

  2. Android开发第1篇 - Android开发环境搭建

    归结一下,需要进行Android开发所需要的工具或软件: Eclipse - Android是基于JAVA的开发,所以选用目前来说使用较高的Eclipse作为IDE. ADT (Android Dev ...

  3. 快速Android开发系列网络篇之Volley

    Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法 RequestQueue mRequestQueue = Volley.newRequest ...

  4. 快速Android开发系列通信篇之EventBus

    先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现..太烂了.怎么着作为一个技术博客 ...

  5. Android进程间通信之内部类作为事件监听器

    在Android中,使用内部类能够在当前类里面发用改监听器类,由于监听器类是外部类的内部类.所以能够自由訪问外部类的全部界面组件. 下面是一个调用系统内部类实现短信发送的一个样例: SMS类: pac ...

  6. 快速Android开发系列网络篇之Retrofit

    Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎 ...

  7. Android 开发之异常处理篇(一):SDK Manager 闪退的解决方法

    这个问题困扰了我很久,之前没解决,就放一放.后来我又专门拿了一个下午来找解决方法,终于搞定! 我的解决方法是修改 android.bat,直接指定java.exe所在位置,不用去调用find_java ...

  8. 高速Android开发系列通信篇之EventBus

    概述及基本概念 **EventBus**是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间的通信.比方请求网络,等网络返回时通过Hand ...

  9. ubuntu下搭建android开发环境核心篇安装AndroidStudio、sdk、jdk

    本文系转载http://blog.csdn.net/lsyz0021/article/details/52215996 一.安装前的准备 1.1.如果你还没有安装ubuntu 14.04 LTS系统, ...

随机推荐

  1. python函数完整语法和分类

    函数初级 简介 # 函数是一系列代码的集合,用来完成某项特定的功能 优点 '''1. 避免代码的冗余2. 让程序代码结构更加清晰3. 让代码具有复用性,便于维护''' 函数四部分 '''1. 函数名: ...

  2. python学习1 ---range()函数

    奇怪的现象 在paython3中 print(range(10)) 得出的结果是 range(0,10) ,而不是[0,1,2,3,4,5,6,7,8,9] ,为什么呢? 官网原话: In many ...

  3. 2017-2018-1 20155208 课堂测试(ch06)(补做)

    2017-2018-1 20155208 课堂测试(ch06)(补做) 1.( 多选题 | 1 分) 下面说法正确的是(ABC) A . 存储层次结构中最小的缓存是寄存器 B . 存储层次结构的中心思 ...

  4. 限定某个目录禁止解析php 、限制user_agent 、php的配制文件、PHP的动态扩展模块

    1. 限定某个目录禁止解析php(有些目录用户可以上传文件或图片,可能会被恶意者上传其它文件):编辑:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf ...

  5. Brute Force Sorting(HDU6215)

    题意:给你长度为n的数组,定义已经排列过的串为:相邻两项a[i],a[i+1],满足a[i]<=a[i+1].我们每次对当前数组删除非排序过的串,合并剩下的串,继续删,直到排序完成. 题解:用双 ...

  6. spring+springMVC,声明式事务失效,原因以及解决办法

    http://blog.csdn.net/z69183787/article/details/37819627#comments 一.声明式事务配置: <bean id="transa ...

  7. 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。

    下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是(    ). ./表示当前项目的路径../表示当 ...

  8. Centos7修改默认启动级别(命令行,图形切换)

    方法一: 终端输入以下命令 修改为命令行方式 systemctl set-default multi-user.target 修改为图形界面 systemctl set-default graphic ...

  9. 使用prometheus+ grafana+nginx-module-vts 模块监控openresty

      nginx-module-vts 是一个很不错的nginx 模块,我们可以用来,方便的分析系统的请求状态 同时支持基于prometheus 的监控, 我参考openresty 的docker镜像已 ...

  10. js将foo-bar转为fooBar

    这是一道js的面试题,就是考察将普通面命转为小驼峰命名 <!DOCTYPE html> <html lang="en"> <head> < ...