首页编程java编程java嵌套是什么意思 Java中什么是嵌套类

java嵌套是什么意思 Java中什么是嵌套类

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

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

java嵌套是什么意思 Java中什么是嵌套类

Java嵌套类

这么说看你理解吧

1.类Class,根据面向对象编程,它是描述对象的原型,拥有自己的属性和行为;

2.我们在定义类时,会根据某特性抽象出一个类,这个类可以完成某些特有的功能

java嵌套是什么意思 Java中什么是嵌套类

如:设计一个打印类Printer,有个一个打印方法print(Object obj)

3.因为我们定义的类是public的,此时Printer类是共用的,大家都可以直接使用

publicclassPrinter{

java嵌套是什么意思 Java中什么是嵌套类

publicvoidprint(inttype,Objectdata){

//打印的具体实现

}

}

到这里是没有问题的

但是在某些时候,我们需要实现一些特有的逻辑,这部分逻辑又不想暴露给其他人

如Printer在执行打印方法print需要对入参data处理

这个时候首先考虑的是给Printer类增加private私有方法(可能有多个),一般都能解决大部分问题

publicclassPrinter{

publicvoidprint(inttype,Objectdata){

//打印的具体实现

if(type==1){

printTxt(data);//打印txt文件

}

if(type==2){

printExl(data);//打印Exl文件

}

}

privatevoidprintTxt(Objectdata){

//打印txt文件

}

privatevoidprintExl(Objectdata){

//打印Exl文件

}

}

根据OOP的设计原理,Printer新加的私有方法【不属于】Printer,而更像另一个独立的类,

这个时候就使用嵌套类,把他隐藏在Printer,不让他人使用,如下:

publicclassPrinter{

publicvoidprint(inttype,Objectdata){

//打印的具体实现

if(type==1){

TxtPrintertxter=newTxtPrinter();//打印txt文件

txter.print(data);

}

if(type==2){

ExlPrinterexlter=newExlPrinter();//打印Exl文件

exlter.print(data);

}

}

privateclassTxtPrinter{//嵌套类

publicvoidprint(Objectdata){

}

}

privateclassExlPrinter{//嵌套类

publicvoidprint(Objectdata){

}

}

}

例子可能不够生动,应该能解释清楚:

有个类Class B,他的逻辑只对Class A负责,但是又不想把B暴露给他人,就把B定义成A的嵌套类

亲,如果回答满意,请即时采纳,你的配合是我回答的动力!

Java中什么是嵌套类

静态内部类(也称:嵌套类)

如果你不需要内部类对象与其外围类对象之间有联系,那你可以将内部类声明为static。这通常称为嵌套类(nested class)。想要理解static应用于内部类时的含义,你就必须记住,普通的内部类对象隐含地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时,就不是这样了。嵌套类意味着:

1.要创建嵌套类的对象,并不需要其外围类的对象。

2.不能从嵌套类的对象中访问非静态的外围类对象。

1)事实上,与前相同,静态内部类也就类似一个类的静态成员方法,它不需要外部类的对象而直接由外部类创建。

2)类似一个类的静态成员方法,它只能访问外部类的静态成员,而不能访问非静态成员。

3)静态内部类中可以定义静态成员,当然也可以定义非静态成员。而其它的内部类都不能定义静态成员。

4)在类外部生成一个静态内部类也和在类外部调用静态方法一样,直接用外部类名创建,如下例:

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

java中:是什么意思

表示作用域,和所属关系。

::是运算符中等级最高的,它可以分为以下三种:

1、global scope(全局作用域符),用法(::name)

2、class scope(类作用域符),用法(class::name)

3、namespace scope(命名空间作用域符),用法(namespace::name)他们都是左关联(left-associativity)他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想调用全局变量a,那么就写成::a;

如果想调用class A中的成员变量a,那么就写成A::a,另外一个如果想调用namespace std中的cout成员,你就写成std::cout(相当于using namespacestd;cout)意思是在这里我想用cout对象是命名空间std中的cout(即就是标准库里边的cout)。

扩展资料:

::在C++中的具体用法:

1、作用域符号:

前面一般是该类名称,后面是该类的成员名称。C++为避免不同的类有相同的成员而采用作用域的方式进行区分,eg:A,B表示两个类,在A,B中都有成员member,那么:A::member表示A中的成员member,B::member表示B中的成员member。

2、全局作用域符号:

当全局变量在局部函数中与其中某个变量重名时,可以用::来区分,否则局部变量会屏蔽全局变量。

3、作用域分解运算符:

比如声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f函数的定义,那么在类外定义f时,就要写成void A::f(),表示这个f函数是类A的成员函数。

参考资料:百度百科-C++

Java 静态内部类作用

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

2、在某些特殊的情况下,少了这个静态内部类还真是不行。如在进行代码程序测试的时候,如果在每一个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();

}

}

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

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

java中什么可以多继承?java中一个接口可以继承几个接口吗56个民族是中华民族共同体(56个民族和中华民族之间是怎样关系)