《java入门第一季》之面向对象(匿名内部类)
- 1、认识匿名内部类
- /*
- 匿名内部类
- 就是内部类的简化写法。
- 前提:存在一个类或者接口
- 这里的类可以是具体类也可以是抽象类。
- 匿名内部类的格式:
- new 类名或者接口名(){
- 重写方法;
- };这代表的是一个子类对象
- 本质是什么呢?
- 是一个继承了该类或者实现了该接口的子类匿名对象。
- */
- interface Inter {
- public abstract void show();
- public abstract void show2();
- }
- class Outer {
- public void method() {
- //接口里面只有一个方法的时候,只有show()
- /*
- new Inter() {
- public void show() {//在匿名内部类里面重写接口或者抽象类的方法。
- System.out.println("show");
- }
- }.show();
- */
- //二个方法的时候
- /*
- new Inter() {
- public void show() {
- System.out.println("show");
- }
- public void show2() {
- System.out.println("show2");
- }
- }.show();
- new Inter() {
- public void show() {
- System.out.println("show");
- }
- public void show2() {
- System.out.println("show2");
- }
- }.show2();
- */
- //如果很多个方法,就很麻烦了.所以选择使用参数接收这个对象,然后使用对象调用方法就可以了。
- Inter i = new Inter() { //接口的实现子类的对象给接口,多态
- public void show() {
- System.out.println("show");
- }
- public void show2() {
- System.out.println("show2");
- }
- };//注意这里的分号
- i.show();
- i.show2();
- }
- }
- class InnerClassDemo6 {
- public static void main(String[] args) {
- Outer o = new Outer();
- o.method();
- }
- }
- 2、匿名内部类在开发中的使用
- 通过一个案例简单演示:
- interface Person {
- public abstract void study();
- }
- class PersonDemo {
- public void method(Person p) {//这种方式,在前面介绍参数类型是引用类型的时候已经介绍过了。
- //见博客(http://blog.csdn.net/qq_32059827/article/details/51344046)
- p.study();
- }
- }
- //实现类
- class Student implements Person {
- public void study() {
- System.out.println("好好学习,天天向上");
- }
- }
- class InnerClassTest2 {
- public static void main(String[] args) {
- //测试
- PersonDemo pd = new PersonDemo();
- Person p = new Student();
- pd.method(p);
- System.out.println("--------------------");
- //匿名内部类在开发中的使用
- //结果和上面一模一样,使用匿名内部类的方式,可以节省内存空间。使用场景,方法比较少的时候使用。
- pd.method(new Person(){
- public void study() {
- System.out.println("好好学习,天天向上");
- }
- });
- }
- }
《java入门第一季》之面向对象(匿名内部类)的更多相关文章
- JAVA入门第一季(mooc-笔记)
笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...
- Java入门第一季——从此投身Java??
找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季 一.简 ...
- 《java入门第一季》之面向对象(谈谈接口)
软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...
- Java入门第一季
慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...
- 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)
根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...
- 《java入门第一季》之面向对象匿名内部类面试题
面试题一: /* 按照要求,补齐代码 interface Inter { void show(); } class Outer { // ...
- 《java入门第一季》之面向对象(包概述)
由于eclipse等ide的强大功能,使得建包,导包用一些快捷键就能完成.这里对包的概念做稍微的叙述,了解即可: 分包后使得项目更加清晰,提高代码维护性. 包: A:其实就是文件夹 ...
- 《java入门第一季》之面向对象(this和super详细分析)
此文章来自于书籍,里面介绍了this和super详细的区别.当然在后边的文章中还有涉及super的时候还会分析. Java关键字this.super使用总结 一.this Java关键字this只能用 ...
- 《java入门第一季》之面向对象(面向对象案例详解)
通过几个小案例理重新回顾一下前面所写的内容,对面向对象的理解更加深刻的目的: 案例一: /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx( ...
随机推荐
- springMVC源码分析--HandlerMethodArgumentResolver参数解析器(一)
HandlerMethodArgumentResolver是用来为处理器解析参数的,主要用在HandlerMethod中,每个Resolver对应一种类型的参数,其实现类特别的多. HandlerMe ...
- R语言:安装及使用
http://blog.csdn.net/pipisorry/article/details/53640638 ubuntu下安装 sudo apt-get install -y r-base源码安装 ...
- Android中Sqlite数据库进行增删改查
今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...
- Android 多窗口详解
多窗口支持 Android N 添加了对同时显示多个应用窗口的支持. 在手持设备上,两个应用可以在"分屏"模式中左右并排或上下并排显示. 在电视设备上,应用可以使用"画中 ...
- TextView的升级版———AutoCompleteTextView
TextView的升级版---AutoCompleteTextView AutoCompleteTextView顾名知义,可以自动提示的TextView,还可以提示错误信息. 这里介绍基本的使用,能够 ...
- 为什么选择C++
为什么选择C++,怎么不选其它语言呢? 为什么不选择C? 因为C++比C简单点~ 为什么不选择C#? 因为C++可以在所有操作系统上使用. 为什么不选择JAVA? 因为C++的性能好一点~ 还有其他的 ...
- [error]configure: error: You need a C++ compiler for C++ support.
安装pcre包的时候提示缺少c++编译器 解决办法 使用yum安装 yum -y install gcc-c++ 本文出自 "orangleliu笔记本"博客,转载请务必保留此出处 ...
- Mysql创建、删除用户、用户管理等相关:转载http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...
- SQLite 创建表(http://www.w3cschool.cc/sqlite/sqlite-create-table.html)
SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...
- JAVA面向对象-----内部类的概述
JAVA面向对象-–内部类的概述s 将类定义在另一个类的内部则成为内部类.其实就是类定义的位置发生了变化. 在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为 ...