1.java中的内部类:
class Outside{
private String nameString ;
private int age;
Outside()
{
}
Outside(String str_name,int int_age)
{
nameString=str_name;
age=int_age;
}
class Inside
{
private String address;
Inside()
{
}
Inside(String str_addr)
{
address=str_addr;
}
void getInfo()
{
System.out.println("姓名:"+nameString+"年龄:"+age+"地址:"+address);
}
}
void getOutsideInfo()
{
System.out.println("姓名:"+nameString+"年龄:"+age);
}
}
public class TestClsss {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Outside pOut =new Outside("xiayi",22);
pOut.getOutsideInfo();
Outside.Inside pin = pOut.new Inside("nanjin");//通过外部类来调用内部类
pin.getInfo();
}
}
运行结果
姓名:xiayi年龄:22
姓名:xiayi年龄:22地址:nanjin
2.Java中的匿名类
interface Info
{
abstract void getInsideInfo();
}
abstract class Addr
{
String address;
Addr(String str_addr)
{
address=str_addr;
}
String getAddr()
{
return address;
}
abstract void getAddress();
}
class Outside{
private String nameString ;
private int age;
Outside()
{
}
Outside(String str_name,int int_age)
{
nameString=str_name;
age=int_age;
}
void getOutsideInfo()
{
Info oInfo = new Info() { //匿名内部类 用接口实现
public void getInsideInfo() {
// TODO Auto-generated method stub
System.out.println("姓名:"+nameString+"年龄:"+age);
}
};
oInfo.getInsideInfo();
}
void getOutsideAddr()
{
Addr a = new Addr("nanjin")//匿名内部类 用抽象类实现
{
public void getAddress() {
System.out.println("地址:"+address);
}
};
a.getAddress();
}
}
public class TestClsss {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Outside pOut =new Outside("xiayi",22);
pOut.getOutsideInfo();
pOut.getOutsideAddr();
}
}
运行结果
姓名:xiayi年龄:22
地址:nanjin
3.c++中的内部类
class Outside
{
private:
string name;
int age;
public:
Outside(){}
Outside(string str_name,int int_age):name(str_name),age(int_age){}
class Inside
{
private:
string addr;
public:
Inside(){}
Inside(string address):addr(address){}
void getInfo()
{
Outside *Os = new Outside("xiayi",22);
cout << "姓名:"+Os->name<< " 年龄:" << Os->age<<" 地址:"<< addr <<endl;;
}
};
};
int main()
{
Outside::Inside is1("nanjin"); //通过外部类初始化内部类
Outside::Inside *is2 = new Outside::Inside("anjin");//通过外部类初始化内部类 注意与java的不同
is1.getInfo();
is2->getInfo();
system("pause");
return 0;
}
运行结果
姓名:xiayi 年龄:22 地址:nanjin
姓名:xiayi 年龄:22 地址:anjin