java/c++中內部類、匿名類
阿新 • • 發佈:2018-12-26
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