c++嵌套类
c++嵌套类等同于内部类的概念,定义嵌套类的目的是为了隐藏信息,提高代码的抽象能力,相当与在内部为外部类提供了一种新的类型。
嵌套类仅仅只是语法上的嵌入,平行的关系,相互独立,相互没有访问的权限。不像Java成员内部类,需要先创建外部类的对象,才能创建内部类的对象。
简单例子
#include<iostream>
#include<string>
using namespace std;
class outer
{
public:
outer(int i):c(i){}
class inner
{
public:
inner(int i):a(i){}
void print(){cout << "inner func!" << endl;}
void func_in();
static int b;
private:
int a;
};
void print(){cout << "outer func!" << endl;}
void func_ou();
static int d;
private:
int c;
};
int outer::d = 1;
int outer::inner::b = 2;
void outer::func_ou()
{
int sum = c+d;
cout << "c+d=" << sum << endl;
}
void outer::inner::func_in()
{
int sum = a+b;
cout << "a+b=" << sum << endl;
}
int main()
{
outer out(1);
outer::inner in(2);
out.func_ou();
in.func_in();
outer out1(out);
out1.print();
outer::inner inner1(in);
inner1.print();
}
java 内部类
Java 内部类分为好几种,最常用的是成员内部类和嵌套静态类
1. 成员内部类可以访问外部类的一些资源,单数成员内部类的使用依赖外部类对象的创建。
2. 嵌套静态类的创建可以引用类名直接创建,但是类内不能使用外部的非静态成员,类似于静态方法。
简单例子
package com.cn.jiang;
class Outer {
private int aa = 12;
private static int ii = 12;
public void func_ou(){System.out.println("func_ou!");}
class Inner{
private int a = 13;
public void func_in(){System.out.println("func_in!"+aa);}
}
public static class Inner1{
private int a = 14;
public void func_in(){System.out.println("func_in!+ii");}
}
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner in = outer.new Inner();
in.func_in();
Outer.Inner1 in1 = new Outer.Inner1();
in.func_in();
}
}