各种内部类的总结

面向对象程序设计中,可以在一个类的内部定义另一个类,这个类叫做内部类。内部类分为3种,成员内部类,局部内部类和匿名内部类。

成员内部类

1.成员内部类位于一个类内部的成员位置,可以访问外部类中私有化的变量,方法等。

2.成员内部类可以被私有化或者静态,静态内部类只能访问外部类中静态的成员。私有化封装的内部类只能通过外部类的成员访问。具体知识点用代码演示。

package 面向对象;
//成员内部类。
class Person
{
     int a=6;

     class Hand
    {
        int a=5;
        public void test_1()
        {
            int a=4;
            System.out.println(Person.this.a);//外部类变量用类名.this修饰。
            System.out.println(this.a);//内部类变量用this修饰。
            System.out.println(a);//内部类的方法内的变量不用修饰。
        }
    }
}

public class Test_5
{
    public static void main(String[] args)
    {
        Person.Hand c= new Person(). new Hand();//注意直接创建内部类对象的格式。
        //如果内部类为静态则创建方式为:Person.Hand c=new Person. Hand();
        c.test_1();
    }
}

局部内部类

局部内部类一般位于外部类的成员方法中。局部内部类不能私有化和静态化。具体知识点如下:

package 面向对象;
//局部内部类。
 class Outer
{
    private int a=5;
    public void run()
    {
        class Inner//局部内部类不能用static,private修饰。
        {
            //final int c=30    //局部内部类使用局部变量必须加final。(jdk8以前)
            public void run_1(final int c)
            {
                System.out.println(Outer.this.a);
                System.out.println(c);
            }
        }
        Inner i=new Inner();//局部内部类完成后需要创建对象。
        i.run_1(30);
    }
}
public class InnerTest
{
    public static void main(String[] args)
    {
        Outer o=new Outer();
        o.run();
    }
}

匿名内部类

使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的引用。

具体知识点如下

package 面向对象;
interface Inter
{
    public abstract void method();
}
class Test_6
{
    public static Inter function()
    {
        return new Inter()//这里的内部类实现了inter接口,重写了method方法。
            {
            public void method()
                {
                    System.out.println("haha");
                }
            };
    }
}
public class InnerClassTest
{
    public static void main(String[] args)
    {
        Test_6.function().method();
    }
}
时间: 2024-11-03 03:46:36

各种内部类的总结的相关文章

修饰符-包-内部类-代码块执行顺序

1.访问权限修饰符     从大到小的顺序为:public--protected--default--private     private--只能在同一类中使用;     default--不用写出来,默认不加.可以被同一包中的类使用     protected--可以被不同包的子类使用     public--可以被不同包的其它类使用 2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)     1)访问权限修饰符:public/default--

内部类实现接口

帮人解答题目,顺便提升思维. 原题目: 于是有了下面的代码: interface Interf{//1.定义接口 abstract public void print(); } public class tt { public static void main(String[] args) { fun(); //6.返回的接口引用,有一个print方法,可以调用fun().print(); } public static Interf fun(){//2.写一个函数 class inner im

包、修饰符、内部类、匿名内部类(java基础知识十)

1.package关键字的概述及作用 * A:为什么要有包     * 将字节码(.class)进行分类存放  * B:包的概述     *   * C:包的作用     * 包名要定义在第一行,     * 包名.*这个包下所有的类都可见     * 具体的类比较好,能提高效率 2.包的定义及注意事项 * A:定义包的格式 * package 包名; * 多级包用.分开即可* B:定义包的注意事项 * A:package语句必须是程序的第一条可执行的代码 * B:package语句在一个jav

Java内部类

本文是<Java核心技术 卷1>中第六章接口与内部类中关于内部类的阅读总结. Java中的内部类(inner class)是定义在另一个类内部的类.那么内部类有什么用呢?这里主要由三个内部类存在的原因: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据.即,如果类A中定义了类B,那么类B可以访问类A中的数据,甚至是私有数据,但类A不能访问类B中的私有数据: 内部类可以对同一个包中的其他类隐藏起来.在一个包中,定义一个类时,即使不加上访问权限关键词,这个类也是包内其他类可访问的,不

从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体

这一章节我们来讨论一下使用构造器或者内部类来实现多线程的编码变体. 1.基础实现 package com.ray.ch17; public class Test { public static void main(String[] args) { Thread thread1 = new ExtendsThread(); thread1.start(); Thread thread2 = new Thread(new ImplRunnable()); thread2.start(); } } c

我的java学习笔记(18)关于内部类(part 3)

1.当使用内部类只是为了把一个类隐藏在另外一个类的内部,并不需要在内部类引用外部类对象时,可以将内部类为static,以便取消产生的引用. 2.只有内部类可以声明为static.静态内部类的对象除了没有对生成它的外部类对象的引用特权外,其他与所有内部类完全一样. 实例代码 测试类 public class test { public static void main(String[] args) { double[] d = new double[20]; for(int i = 0; i <

内部类与匿名类(转)

Java 中的内部类和匿名类* 为什么需要内部类? Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力.真正的原因是这样的,java 中的内部类和接口

java-多态、内部类

1.多态: 1)意义: 1.1)同一类型的引用,指向不同的对象时,有不同的实现-------行为的多态: cut(),run(),teach()... 1.2)同一个对象,被造型为不同的类型时,有不同的功能-------对象的多态: 我,你,水... 2)向上造型: 2.1)父类型的引用指向子类的对象 2.2)能造型成为的类型有: 父类+所实现的接口 2.3)能点出来什么,看引用的类型 3)强制类型转换,成功的条件只有如下两种: 3.1)引用所指向的对象,就是该类型 3.2)引用所指向的对象,实

【java基础】(6)内部类

内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类 而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构 //外部类 class Out { private int age = 12; //内部类 class In { public void print() { System

内部类

一个类嵌套在另一个类中,称为内部类. 内部类可以使用外部所有的变量,方法(包括私有方法).是说内部类实例可以存取外部类实例的内容.