1. 程式人生 > >java/c++中內部類、匿名類

java/c++中內部類、匿名類

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