首页编程java编程java 为什么有内部类?java为什么要用内部类

java 为什么有内部类?java为什么要用内部类

编程之家2023-10-1194次浏览

今天给各位分享java 为什么有内部类的知识,其中也会对java为什么要用内部类进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java 为什么有内部类?java为什么要用内部类

Java为什么要使用内部类

1.内部类提供进入其外围类的绿色通道;

2.一般来说,内部类继承自某个类或实现某个接口,和接口一起实现java中多重继承;

3.private内部类给类的设计者提供了一种途径,通过这种方式可以完全阻止任何依赖于类型的编码,并且完全隐藏了实现的细节;

java 为什么有内部类?java为什么要用内部类

4.匿名内部类可以使得代码更加地灵活。

Java 静态内部类作用

1、变值权限修饰作用,在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。

2、在某些特殊的情况下,少了这个静态内部类还真是不行。如在进行代码程序测试的时候,如果在每一个Java源文件中都设置一个主方法(主方法是某个应用程序的入口,必须具有),那么会出现很多额外的代码。

java 为什么有内部类?java为什么要用内部类

3、最主要的时这段主程序的代码对于Java文件来说,只是一个形式,其本身并不需要这种主方法。但是少了这个主方法又是万万不行的。在这种情况下,就可以将主方法写入到静态内部类中,从而不用为每个Java源文件都设置一个类似的主方法。

这对于代码测试是非常有用的。在一些中大型的应用程序开发中,则是一个常用的技术手段。

扩展资料

例如:

对于两个类,拥有相同的方法:

class People{

run();

}

interface Machine{

run();

}

此时有一个robot类:

class Robot extends People implement Machine.

此时run()不可直接实现。

interface Machine{

void run();

}

class Person{

void run(){

System.out.println("run");

}

}

class Robot extends Person{

private class MachineHeart implements Machine{

public void run(){

System.out.println("heart run");

}

}

public void run(){

System.out.println("Robot run");

}

Machine.getMachine(){returnnew MachineHeart();

}

class Test{

publicstaticvoid main(String[] args){

Robot robot=new Robot();

Machine m=robot.getMachine();

m.run();

robot.run();

}

}

参考资料来源:百度百科-静态内部类

java为什么要用内部类

1.内部类能访问外围类的所有成员,包括私有成员。

当生成一个内部类对象时,此对象与制造它的外围类对象之间就有了一种联系,所以它能访问其外围类对象的所有成员,而不需要任何特殊的条件。如下面代码所示:

[java]view plaincopy

classOutterClass{

privateinti=1;

classInnerClass{

publicvoiddisplayPrivate(){

System.out.println(i);

}

}

}

publicclassMainClass{

publicstaticvoidmain(String[]args){

OutterClassoutter=newOutterClass();

OutterClass.InnerClassinner=outter.newInnerClass();

inner.displayPrivate();

}

}

由上面的代码可以看出,内部类能够访问外部类的私有成员变量。在这段代码中,还需要注意的是

①生成内部类对象,必须要先有外围类对象,具体的做法请见代码;

②内部类能访问外围类的私有成员这一点,C++中的嵌套类是没有这个特性的。

2.内部类与static

①内部类不能含有static方法;

②内部类不能含有static数据成员,除非是static final;

③内部类可以继承含有static成员的类。

3.匿名内部类

匿名内部类,看起来非常奇怪。因为它太简洁了,但这也带来一个好处,用匿名内部类写出来的代码通常比较简洁啦!

深入理解Java中为什么内部类可以访问外部类的成员

一般来说,外部类调用内部类的方法分为以下几种情况:

1.使用static可以声明一个内部类,可以直接在外部调用

//定义外部类

class Outer

{

//定义外部类的私有属性

private static String info="hello world";

//使用static定义内部类

static class Inner

{

//定义内部类的方法

public void print()

{

//直接访问外部类的私有属性

System.out.println(info);

}

}

//定义外部类的方法

public void fun()

{

//通过内部类的实例化对象调用方法

new Inner().print();

}

}

public class InnerClassDemo03

{

public static void main(String args[])

{

//通过Outer.Inner创建内部类的实例,并调用它的print方法

new Outer.Inner().print();

}

}

2.不使用statc声明一个内部类,使外部调用

//定义外部类

class Outer

{

//定义外部类的私有属性

private String info="hello world";

//定义内部类

class Inner

{

//定义内部类的方法

public void print()

{

//直接访问外部类的私有属性

System.out.println(info);

}

};

//定义外部类的方法

public void fun()

{

//通过内部类的实例化对象调用方法

new Inner().print();

}

};

public class InnerClassDemo04

{

public static void main(String args[])

{

//外部类实例化对象

Outer out= new Outer();

//实例化内部类对象

Outer.Inner in= out.new Inner();

//调用内部类的方法

in.print();

}

}

3.在方法中定义内部类,使外部调用

//定义外部类

class Outer

{

//定义外部类的私有属性

private String info="hello world";

//定义外部类的方法

public void fun(final int temp)

{

//在方法中定义的内部类

class Inner

{

//定义内部类的方法

public void print()

{

//直接访问外部类的私有属性

System.out.println("类中的属性:"+ info);

System.out.println("方法中的参数:"+ temp);

}

}

//通过内部类的实例化对象调用方法

new Inner().print();

}

}

public class InnerClassDemo05

{

public static void main(String args[]){

//调用外部类的方法

new Outer().fun(30);

}

}

java 为什么有内部类和java为什么要用内部类的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

g620cpu参数 g620处理器是哪一年的什么是java 继承(JAVA中什么是继承)