Java的内部类总结

网友投稿 258 2022-09-04


Java的内部类总结

目录前言一,成员内部类1,成员内部类的特点2,成员内部类的实现3,内部类和外部类的关系二,静态内部类1,静态内部类的特点2,比较成员内部类和静态内部类3,静态内部类的实现三,方法内部类1,方法内部类的特点2,方法内部类的实现四, 匿名内部类1,匿名内部类的特点2,匿名内部类的实现总结

前言

最近看了内部类后,总结一下,首先内部类嵌套在其他内部的类,根据出现的位置和关键字,可以分为以下四种类:成员内部类,静态内部类,方法内部类,匿名内部类,接下来就介绍下这四种类,记得耐心看哦

一,成员内部类

1,成员内部类的特点

(1)private不可以用在外部类的声明,但可在内部类声明,成员变量可以是private

(2)内部类,外部类可以相互访问彼此的私有域

A:内部类访问外部类的私有域可以直接访问,因为成员内部类含有隐藏对象

B:外部类访问内部类的私有域通过内部类对象访问

(3)内部类可解决java中单继承问题

(4)内部类可以对外部隐藏

2,成员内部类的实现

public class Outter { // 成员变量 private int age = 12; private String name = "zh"; private static final int A = 20; //成员内部类 class Inner{ private String a = "hello"; private int age = 20; public void test(){ System.out.println(a); // 可以访问外部类的私有域age System.out.println(Outter.this.age); //访问自己的age System.out.println(this.age); System.out.println(A); } } // 外部类成员方法 public void fun() { int a = 0; // 外部类内部创建内部类对象 Inner inner = new Inner(); System.out.println(inner.a); }}class Test { public static void main(String[] args) { //外部类的外部创建内部类对象 Outter.Inner inner = new Outter().new Inner(); }}public class Outter {

// 成员变量

private int age = 12;

private String name = "zh";

private static final int A = 20;

//成员内部类

class Inner{

private String a = "hello";

private int age = 20;

public void test(){

System.out.println(a);

// 可以访问外部类的私有域age

System.out.println(Outter.this.age);

//访问自己的age

System.out.println(this.age);

System.out.println(A);

}

}

// 外部类成员方法

public void fun() {

int a = 0;

// 外部类内部创建内部类对象

Inner inner = new Inner();

System.out.println(inner.a);

}

}

class Test {

public static void main(String[] args) {

//外部类的外部创建内部类对象

Outter.Inner inner = new Outter().new Inner();

}

}

3,内部类和外部类的关系

A:成员内部类的创建需要依赖于外部类对象

B:内部类和外部类之间相互独立

C:两者的私有属性可以相互访问

D:语法

(1)外部类的内部创建内部类对象

Inner inner = new Inner();

(2)外部类的外部创建内部类对象

Outter.Intter intter = new Outter().new Intter();

E:在内部类的内使用隐藏的this

二,静态内部类

1,静态内部类的特点

(1)定义在外部类的内部使用static修饰,静态内部类无需外部类无需外部类产生对象就可以使用

(2)静态内部类的创建语法

StaticInnerClass.Inner inner = new StaticInnerClass.Inner();

2,比较成员内部类和静态内部类

(1)成员内部类不能拥有静态域,但可以访问外部的静态域

(2)静态内部类可以拥有成员域,但不能访问外部的成员域

3,静态内部类的实现

public class StaticInnerClass {

static int age;

String name;

//静态内部类--类比--静态变量

static class Inner{

private int age;

public void test(){

http:// System.out.println(age);

// System.out.println(name);不能访问外部成员域

}

}

public void fun() {

Inner inner = new Inner();

}

}

class Test1 {

public static void main(String[] args) {

StaticInnerClass.Inner inner = new StaticInnerClass.Inner();

}

}

三,方法内部类

1,方法内部类的特点

(1)方法内部类定义在方法内部

(2)对外部完全隐藏,因此不能有任何访问修饰

(3)若要方法的形参只能用,不能改(形参的隐式final声明)

2,方法内部类的实现

//方法内部类

public class FunClass {

private int age;

public void fun(int age) {

class Inner {

void fun() {

// System.out.println(age);

}

}

age = 10;

}

}

四, 匿名内部类

1,匿名内部类的特点

(1)匿名内部类定义在方法内部,类没有名字

(2)必须继承一个抽象类或者实现一个接口

(3)没有构造方法

2,匿名内部类的实现

//实现接口interface IMessage { void fun();}public class NonNameClass { public static void main(String[] args) { //匿名内部类 Thread thread = new Thread(new Runnable() { @Override public void run() { http:// System.out.println("hello A"); } }); Thread thread1 = new Thread({ System.out.println("hello "); } ); thread.start(); thread1.start(); }}//实现接口

interface IMessage {

void fun();

}

public class NonNameClass {

public static void main(String[] args) {

//匿名内部类

Thread thread = new Thread(new Runnable() {

@Override

public void run() {

System.out.println("hello A");

}

});

Thread thread1 = new Thread({

System.out.println("hello ");

} );

thread.start();

thread1.start();

}

}

总结

朋友们,看到最后是不是对内部类有了新的认识?

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于python文件读写小结(Python文件读写方法)
下一篇:(python)华为呼叫中心自动化发布工具开发四主界面设计
相关文章

 发表评论

暂时没有评论,来抢沙发吧~