Java内部类

  内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。

      内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。

一、成员内部类

  成员内部类也是最普通的内部类,它是外围类的一个成员,所以他是可以无限制的访问外围类的所有 成员属性和方法,尽管是private的,但是外围类要访问内部类的成员属性和方法则需要通过内部类实例来访问。(简单的来说就是定义在一个类里面的另一个类)

在成员内部类中要注意两点

  第一:成员内部类中不能存在任何static的变量和方法;

  第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。

下面简单的是一个成员内部类的例子:

 public class Outer {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print("Outer.new"); inner = outer.getInner();
inner.print("Outer.get");
} // 个人推荐使用getxxx()来获取成员内部类,尤其是该内部类的构造函数无参数时
public Inner getInner() {
return new Inner();
} public class Inner {
public void print(String str) {
System.out.println(str);
}
}
}

二、成员内部类

  成员内部类是指内部类定义在方法和作用域内。

下面是一个简单的列子:

1.首先我们先创建一个方法

 public class DuanZhanShiChuangZhen {

     public void noProblem () {
System.out.println("不小心撞到人了,怎么办,不过好像我爸是李刚");
}
}

2.然后创建一个测试类来实现内部类的方法的定义和使用

 public class Test {

     public void driver () {
System.out.println("我正在开车");
//成员内部类
class B extends DuanZhanShiChuangZhen { }
new B().noProblem();//调用内部类中的方法
System.out.println("爱死我爹了"); } public static void main(String[] args) {
new Test().driver();//在main方法中调用
}
}

输出的结果:

三、匿名内部类

  匿名内部类,从名字上来看就是没有名字的,就是没有名字的内部类

  正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

  但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

夏明是一个简单的匿名内部类的例子:

 1.先定义一个QinShou的接口(老师教的案例,只在于理解,请不要过多猜测,本人很纯洁的)

 package memberinner3;

 public interface QinShou {

     public void workInNight();
}

2.定义一个Doctor 的抽象类来继承Qinshou的借口

 package memberinner3;

 public abstract class Doctor implements QinShou{

     public void workInDay () {
System.out.println("白天传授理论知识");
}
}

3.下面就是同过main方法来实现匿名内部类的

 package memberinner3;

 public class Test {

     public static void main(String[] args) {         //匿名内部类
//new出一个抽象类或借口
//直接加一个{}
//在{}里面实现方法
Doctor d = new Doctor() { @Override
public void workInNight() {
System.out.println("洗洗睡");
}
};
d.workInDay();
d.workInNight();
} }

输出的结果:

以上就是实现匿名内部类方法。

Android菜鸟成长记2-内部类的更多相关文章

  1. Android菜鸟成长记16 -- JSON的解析

    JSON的定义  一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  2. Android菜鸟成长记15 -- BitMap

    BitMap简介 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bi ...

  3. Android菜鸟成长记14 -- AsnyTask

    本篇随笔将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多线程 在Android当中,当一个应用程序的组件启动的时候,并且没有 ...

  4. Android菜鸟成长记13 -- 初识application

    二.Application 简介 Application 类是用来维护应用程序全局状态.你可以提供自己的实现,并在 AndroidManifest.xml文件的 <application> ...

  5. Android菜鸟成长记12 -- ORMLite的简单使用

    在我们的开发中,为了提高开发效率,我们一般都会使用到框架,ormilte则是我们必不可少的数据库框架. 对于ORMLite我也是今天才刚刚接触,我们先从一个简单的项目来了解它吧. ORMLite ja ...

  6. Android菜鸟成长记11 -- sqlite数据库的设计和升降级

    Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...

  7. Android菜鸟成长记10 -- ListVew

     ListView在我们学习Android的过程中是非常重要得一个部分. listview主要有两个职责 1)将数据填充到布局. 2)处理用户的选择点击等操作. 一个ListView的创建需要3个元素 ...

  8. Android菜鸟成长记9 -- selector的用法

    在项目开发的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界面,用美工给的图片取代系统图片.开始时,我只是给按钮等设置一下背景图片,这样做虽然美观了,但界面看起来却比较死板,比如用户点 ...

  9. Android菜鸟成长记8 -- 布局实践(微信界面的编写)

    前面我们简单的介绍了一下android的五大布局,那么现在我们来实践一下,写一个简单的微信界面 首先,我们新建一个weixin.xml的linnerlayout布局 我们日常使用的微信,从简单的方面来 ...

  10. Android菜鸟成长记7 -- Android的五大布局

    Android五大布局,相信android的都了解过,今天我根据自己的学习整理一下五大布局,主要介绍的是线性布局(LiearLayout),因为,其他的布局使用率不是很高. Android的五大布局 ...

随机推荐

  1. web安全之http协议

    http协议 全称是超文本传输协议,是web的核心传输机制,也是服务端和客户端之间交换url的首选协议. url url全称是统一资源定器(统一资源标识符) 顾名思义 每一条格式正确且规范,但url都 ...

  2. jquery插件文件上传

    文件上传有很多jQuery插件,一般我最为常用的就是uploadify.js和ajaxfileupload.js,二者都是以file标签为依托,前者需要在页面初始化时就渲染插件,比较适合单纯的文件上传 ...

  3. QSqlTableModel 使用方法(转)

    Qt QSqlTableModel 使用心得 连接数据库 执行sql查询,条件显示,排序 获取记录数,列数以及记录内容,字段内容 新增,修改,删除,恢复 其它 1---------------连接数据 ...

  4. ElasticSearch中的简单查询

    前言 最近修改项目,又看了下ElasticSearch中的搜索,所以简单整理一下其中的查询语句等.都是比较基础的.PS,好久没写博客了..大概就是因为懒吧.闲言少叙书归正传. 查询示例 http:// ...

  5. 转载: Emmet:HTML/CSS代码快速编写神器

    Emmet:HTML/CSS代码快速编写神器 因为文章严禁转载,那本着做一个遵纪守法的好公民,我就不转载了,把链接放下面,方便查阅. http://www.iteye.com/news/27580

  6. [solr] - Facet

    Solr facet使用于分类统计,是最好的工具.下面例子使用facet将可模拟查询搜索出租房信息. 1.在schema.xml中的内容如下: <?xml version="1.0&q ...

  7. [转载][翻译] 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述

    [原作者] Derek Yang Shen[原文链接] http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html[源码链接] htt ...

  8. HTML标签_01

    <!DOCTYPE html> <html> <body> <h1>我的第一个标题</h1> <p>我的第一个段落.</p ...

  9. RMAN_学习笔记2_RMAN Setup配置和监控

    2014-12-23 Created By BaoXinjian

  10. Haproxy+asp.net +RedisSessionStateProvider 完美实现负载均衡,并且session保持

    .net framework 4.5下测试成功,使用RedisSessionStateProvider 2.2.1保持session数据,通过Haproxy保持会话数据.首先在PM下安装RedisSe ...