总所周知,Android系统基于Linux,内核和驱动都是使用C/C++语言做开发,但应用层一般使用 JAVA 语言开发。今天我们就来学习一下java的内部类。

  内部类

    • 是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。
    • 对于一个名为outer的外部类和其内部定义的名为inner的内部类,编译完成后出现outer.class和outer$inner.class两类。
    • 内部类的成员变量/方法名可以和外部类的相同

  java分三大内部类

    • 成员内部类
    • 方法内部类
    • 匿名内部类

   成员内部类

    顾名思义,成员内部类,是内部类作为外部类的成员属性,可直接使用外部类的所有成员和方法。就如父子,子可以使用父的所有东西,即使是私有(private)的。

    

 public class A {

     class B{
public void A(){
System.out.println("我们今晚跟小红红有约,小红红是个男生");
}
} public void show(){
B b = new B();
b.A();
} public static void main(String[] args) { new A().show();
} }

 

   方法内部类

    • 内部类定义在外部类的方法中,内部类只在该方法的内部可见,即只在内部类中使用。
    • 方法内部类使用时,在方法中创建内部类对象,用对象调用其内部类中的方法。           

  

 public class oldDriver {

     public void old () {

         System.out.println ( " ---------老司机上车 " );
}
}
 public class Test {

     public void driver () {
System.out.println ( "---------开车"); class B extends oldDriver { }
new B().old();
System.out.println( "---------司机开车" );
}
public static void main(String[] args) {
new Test().driver();
}
}

  看到这,有的同学就有疑问了:为什么不直接一个外部类 extends oldDriver?

  试想,当外部类继承或者实现一个接口,那么这个类整个类就是一个老司机(oldDriver),但我只是想在我需要的时候表明我是一个有20年驾照的司机。

这就是方法内部类。

  匿名内部类

    • 匿名内部类也就是没有名字的内部类
    • 只能使用一次,通常用来简化代码编写  
    • 必须继承一个父类或实现一个接口     
 public interface Qinshou {

     public void workInNight();
}
 public abstract class Doctor implements Qinshou{
//继承Qinshou接口 ---> 没有实现Qinshou里的抽象方法
//实现Qinshuo接口 ---> 实现了Qinshou里的抽象方法
public void workInDay() {
System.out.println("白天传授理论知识。");
} }
 public class Doctor1 extends Doctor{
  //继承Doctor
public void workInNight() { System.out.println("晚上就弹钢琴");
} }
 public class Doctor2 extends Doctor{

     public void workInNight() {

         System.out.println("晚上我要看会电影");
} }
 public class Test {
public static void main(String[] args) {
Doctor1 d1 = new Doctor1();
d1.workInDay();
d1.workInNight(); Doctor2 d2 = new Doctor2();
d2.workInDay();
d2.workInNight(); /**
* 匿名内部类 语法三步走:
* 1.new 一个抽象类 或者 接口
* 2.加上一个花括号
* 3.给它添加为实现的方法
*/ Doctor d3 = new Doctor() { public void workInNight() {
System.out.println("我是doctor3 ,我晚上要睡觉");
}
};
d3.workInDay();
d3.workInNight();
}
}

  匿名内部类

    • 继承一个抽象类 abstract class
    • 实例实现一个接口 new / implements
    • 多线程继承Thread类
    • 多线程继承Runnable接口
 public class Demo {

     public static void main(String[] args) {

         Runnable r = new Runnable() {
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.print(i + " ");
}
}
}; Thread t = new Thread(r);
t.start();
}
}

运行结果:1 2 3 4 5

最后,希望大家能继续关注我。来一句诗词:百川东到海,何时复西归?

Android-Java第一课 内部类 (inner Class)的更多相关文章

  1. Android入门第一课之Java基础

    通知:由于本周六场地申请没通过,所以本周的培训临时取消. 今天给大家带来的是Android入门的第一课,由于教室申请的不确定性,因此,每次培训的内容都会在博客先提前释放出来.首先Android的APP ...

  2. 尚学堂Java第一课

    今天是北京尚学堂郑州分校开课的第一天,小班面授教学. 我很兴奋,是一个小白对IT大神渴求传道授业解惑的兴奋. 杨老师还是一贯耐心详细的手敲了第一堂课的完整大纲,必须给杨老师赞赞赞!!! 从幽默的制定班 ...

  3. 快乐的一天从JAVA第一课开始,生活美滋滋!!!

    ---恢复内容开始--- 学JAVA第一天 今天稀里糊涂就把JAVA环境配好了 现在回想一下,吧环境跟大家分享一下…… 第一步:下载         JAVA(推荐使用谷歌浏览器,因为谷歌浏览器右键点 ...

  4. java第一课总结

    转眼间开学了,我们也正式进入了大二.心里既有激动,又有些感慨,还带有一些担忧.激动的是我们褪去了大一的稚气成为了一名大二的学长了,第一次体会到了大学学长的感觉,心里很是激动.感慨的是我们又成长了一岁, ...

  5. Android课程---第一课

    Android是一种基于Linux的开源的操作系统 主要使用于智能设备,如智能手机.平板电脑和智能电视等 由Google公司领头开发并推广,2008年推出第一个版本. 此系统最初由”安卓之父" ...

  6. Java 第一课

    怎么去学习java: 1,课前预习,加深对课上学习的吸收! 2,课后预习,让我们能够对所学内容的掌握! 3.通过画流程图,锻炼逻辑思维能力,学会从程序员的角度去看到问题,摒弃以前的惯性的思维方式!

  7. Android学习第一课

    首先看一个android项目中各个包的作用 以下看几个经常使用的控件: 1. TextView 显示文本框控件 2. EditText 输入文本框 TextView控件经常使用属性: id----控件 ...

  8. java第一课,java基础

    Java:                是1991年SUN公司的James Gosling等人开发名称为Oak的语言,希望用于控制嵌入在有线电视交换盒,PDA等的微处理器.java.是面向互联网的语 ...

  9. [Java第一课]环境变量的配置以及eclipse一些常用快捷键

    1.环境变量的配置(这里对xp系统电脑来说:) 首先安装jdk软件. 然后在我的电脑(右键)-->属性-->高级-->环境变量-->系统变量(注意)-->新建(新建两个p ...

随机推荐

  1. 生物信息 perl 脚本实战

    索引 1.统计fasta.fa和fastq文件的长度,统计fastq的reads个数,单个reads长度,reads总长度:统计fasta文件中contig的个数,列出名称,单条的长度,以及总长度. ...

  2. 微信小程序初体验(上)

    版权声明:本文由练小习原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/204 来源:腾云阁 https://www.qclo ...

  3. 十问 Linux 虚拟内存管理 (glibc) (二)

    版权声明:本文由陈福荣原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/184 来源:腾云阁 https://www.qclo ...

  4. SAP 通过屏幕字段查看透明表

    我要查看创建采购订单屏幕上抬头部分付款条件的这个透明表中的字段. 图1. 1.首先准备好MM模块中的常用透明表. 图2. 2.把光标放在字段上,按F1,再点击图中技术信息按钮. 图3. 3.在弹出的技 ...

  5. Unity3D WebCamTexture 调用外部摄像头

    http://www.itnose.net/detail/6259004.html 一:Unity 中使用WebCamTexture 调用摄像头实现拍照和摄像. using UnityEngine; ...

  6. 20145218 《Java程序设计》第01次实验报告

    北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.08 实验名称:Java开发环境的熟悉(Linux + Eclipse) 实 ...

  7. tr设置背景图片

    tr是不能设置背景图片的....

  8. 超实用的JavaScript代码段 Item4 --发送短信验证码

    发送短信验证码 实现点击“发送验证码”按钮后,按钮依次显示为“59秒后重试”.“58秒后重试”…直至倒计时至0秒时再恢复显示为“发送验证码”.在倒计时期间按钮为禁用状态 . 第一步.获取按钮.绑定事件 ...

  9. android 圆角边框及图片

    <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http: ...

  10. easyui datagrid的列编辑

    [第十五篇]easyui datagrid的列编辑,同时插入两张表的数据进去   看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第 ...