Android 您所在的位置:网站首页 inner是什么品牌 Android

Android

2024-07-05 16:30| 来源: 网络整理| 查看: 265

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

  内部类:

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

  java分三大内部类:

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

   成员内部类

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

    

1 public class A { 2 3 class B{ 4 public void A(){ 5 System.out.println("我们今晚跟小红红有约,小红红是个男生"); 6 } 7 } 8 9 public void show(){ 10 B b = new B(); 11 b.A(); 12 } 13 14 public static void main(String[] args) { 15 16 new A().show(); 17 } 18 19 }

 

   方法内部类

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

  

1 public class oldDriver { 2 3 public void old () { 4 5 System.out.println ( " ---------老司机上车 " ); 6 } 7 } 1 public class Test { 2 3 public void driver () { 4 System.out.println ( "---------开车"); 5 6 class B extends oldDriver { 7 8 } 9 new B().old(); 10 System.out.println( "---------司机开车" ); 11 } 12 public static void main(String[] args) { 13 new Test().driver(); 14 } 15 }

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

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

这就是方法内部类。

 

  匿名内部类

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

 

1 public interface Qinshou { 2 3 public void workInNight(); 4 } 1 public abstract class Doctor implements Qinshou{ 2 //继承Qinshou接口 ---> 没有实现Qinshou里的抽象方法 3 //实现Qinshuo接口 ---> 实现了Qinshou里的抽象方法 4 public void workInDay() { 5 System.out.println("白天传授理论知识。"); 6 } 7 8 } 1 public class Doctor1 extends Doctor{ 2   //继承Doctor 3 public void workInNight() { 4 5 System.out.println("晚上就弹钢琴"); 6 } 7 8 } 1 public class Doctor2 extends Doctor{ 2 3 public void workInNight() { 4 5 System.out.println("晚上我要看会电影"); 6 } 7 8 } 1 public class Test { 2 public static void main(String[] args) { 3 Doctor1 d1 = new Doctor1(); 4 d1.workInDay(); 5 d1.workInNight(); 6 7 Doctor2 d2 = new Doctor2(); 8 d2.workInDay(); 9 d2.workInNight(); 10 11 /** 12 * 匿名内部类 语法三步走: 13 * 1.new 一个抽象类 或者 接口 14 * 2.加上一个花括号 15 * 3.给它添加为实现的方法 16 */ 17 18 Doctor d3 = new Doctor() { 19 20 public void workInNight() { 21 System.out.println("我是doctor3 ,我晚上要睡觉"); 22 } 23 }; 24 d3.workInDay(); 25 d3.workInNight(); 26 } 27 }

  匿名内部类

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

 

1 public class Demo { 2 3 public static void main(String[] args) { 4 5 Runnable r = new Runnable() { 6 public void run() { 7 for (int i = 1; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有