JAVA和C++內部類
阿新 • • 發佈:2018-12-26
結論:JAVA裡面的內部類比C++裡面的內部類好用
JAVA程式碼
1.OutSide.class
2._Main.class
C++程式碼
1.OutSide.h
2.._Main.cpp
下面是JAVA程式碼
OutSide.class
_Main.classpackage ABoutInnerClass; public class OutSide { public int a=1; public static int b=10000; public void print() { System.out.println("OutSide-print called"); } public InSide Create() { InSide a=new InSide(); return a; } public class InSide { public int c=2; public void print() { System.out.println("InSide-print called"); System.out.println("a of OutSide is "+b); System.out.println("OutSide-a is "+a); System.out.println("OutSide-a is "+OutSide.this.a); } } }
package ABoutInnerClass;
public class _Main
{
public static void main(String[] args)
{
OutSide outside=new OutSide();
outside.print();
OutSide.InSide inside=outside.new InSide();
inside.print();
OutSide.InSide inside2=outside.Create();
inside2.print();
}
}
執行結果:
OutSide-print called
InSide-print called
a of OutSide is 10000
OutSide-a is 1
OutSide-a is 1
InSide-print called
a of OutSide is 10000
OutSide-a is 1
OutSide-a is 1
Outside.h
#include <stdio.h> class OutSide { public: int a; static int static_a; OutSide() :a(1) { } void print() { printf_s("OutSide-print called\n"); } class InSide { public: int b; InSide():b(2) { } void print() { printf_s("InSide-print called\n"); printf_s("a of OutSide is %d\n", OutSide::static_a); } }; InSide* Create() { InSide *a = new InSide(); return a; } }; int OutSide::static_a = 1000;
_Main.cpp
#include "Demo.h"
#include <string>
void main()
{
OutSide *outside = new OutSide();
outside->print();
OutSide::InSide *inside = new OutSide::InSide();
inside->print();
OutSide::InSide *inside2 = outside->Create();
inside2->print();
getchar();
delete inside2;
delete outside;
delete inside;
}
執行結果:
個人覺得C++中內部類用得不是很多,可以分開寫,時程式碼變得簡單,可讀性變強