zoukankan      html  css  js  c++  java
  • java内部类

    在这里我们介绍在java中的三种内部类(成员内部类,方法内部类(又叫局部内部类)和匿名内部类),内部类顾名思义就是在一个类里面再定义一个类。

      1.成员内部类(member inner class):常规内部类没有用static修饰且定义在在外部类类体中,高度内聚
        常规内部类中的方法可以直接使用外部类的实例变量和实例方法。

        代码如下:

        public class A {

          //定义一个常规内部类

         public class B {

            public void show() {

              System.out.pritln("这是类B.");

            }

          }

          //在本类中调用常规内部类时可以直接new 常规内部类。

          public static void main(String[] args) {

            B b = new B();

            b.show();

          }

        }

        //在其他类中调用B类的方法。

        //忽略导包。

        public class C {

          public static void main(String[] args) {

            B b = new A().new B();

          }

        }

       2.方法内部类(局部内部类):定义在方法的内部(作用域:只能在该方法的内部使用,超出该方法则无法使用)方法定义局部内部类同方 法定义局部变量一样,不能使用private、protected、public等访问修饰说明符修饰,也不能使用static修饰,但可以使用final和   abstract修饰

          例题代码如下:

          public class A {

            public void show (){

              System.out.println("类A中的show方法。");

              //定义一个局部类B

              class B {

                System.out.println("局部内部类B");

              }

            }

            //在main方法中调用show();

            public static void main (String[] args) {

              A.show();

            }

          }

        3.匿名内部类(Anonymous inner class):就是定义一个没有名字的类,所以这个类是一次性的,不能够重复使用。也就是将类的定义与类的创建,放到一起完成,或者说在定义类的同时就创建一个类。

          语法如下:

            new className() {

              //类体。

            }

          例题代码如下:

          //定义一个People接口

          public interface People {

            //定义一个抽象方法

            public void action();

          }

          //一个测试类

          public class Test {

            public static void main(String[] args) {

              People  students = new People() {

                //实现People类里的action方法

                public void action() {

                  System.out.println("学习");

                }

              };

              students.action();

            }

          }

          

  • 相关阅读:
    希尔排序例子
    C
    重构最大堆的例子
    基于堆的优先队列和用优先队列排序的例子
    堆排序例子
    分治法示例
    三路划分的快速排序算法
    二叉搜索例子
    标准快速排序
    【转载】JAVA5新特性
  • 原文地址:https://www.cnblogs.com/xzmr/p/6069422.html
Copyright © 2011-2022 走看看