zoukankan      html  css  js  c++  java
  • [零基础学JAVA]Java SE面向对象部分.面向对象基础(03)

     1.静态变量的使用

    2.单例模式的使用。

    3.构造方法的私有化。

    4.string的使用,两种构造的不同。

    小的记忆错误:
    · 数组的长度:数组名称.length     这个没()哈~~
    · 字符串的长度:调用的是里面的方法:字符串对象.length()    这个有()哈~
     

     Java:

    class Info{

        //静态变量可以在定义时初始化,是所有对象共同产生的
        static  String city = "chengdu";
         String name ;
         int age;
         //单例模式  一个类只有个一实例化模型

         private Info(){}
         private static Info instance = new Info();
         public static Info getInstance(){
             return instance;
         }

         static void show(){
             //静态的方法只能调用静态的变量或静态的方法
            // this.name  = "zsf";
             //this.age = 23;
             System.out.println(Info.city);
         }

         static void show(Info info){
             //this.name  = "zsf";
             //this.age = 23;
             System.out.println(info.name);
             System.out.println(info.age);
             System.out.println(info.city);
         }
    };

    public class StaticTest{

        public static void main(String args[]){
        //静态方法可以在对象没有实例化之前调用静态方法只能调用静态属性。,
        //非静态方法只能对象实例化后才可以调。
        /*
            Info.show();
            
            Info.show(new Info());

            Info info = new Info();
            info.name = "zsf";
            info.age = 23;
            Info.city = "sichuang";

            info.show(info);

            System.out.println(info.name);
            System.out.println(info.age);
            System.out.println(info.city);
    */
            Info.show();
    //  单例模式的调用及使用。
            Info info = null;
            info  = Info.getInstance();

            Info info1 = null;
            info1 = Info.getInstance();

            info.name = "zsf";
            info.age = 23;

            info1.name ="aa";
            info1.age = 23;

            System.out.println(info.name);
            System.out.println(info.age);

            System.out.println(info1.name);
            System.out.println(info1.age);

        }
    }

            

    C++:
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <string>

    using namespace std;
    class Person{
        private:
            Person(){};
            static Person *per;
        public:
            static Person* getInstance(){
                if(per==NULL)
                    per = new Person();
                return per;
            }
    #if 0
            string name;
            int    age;
            static string city;

            void setName(string name);
            void setAge(int age);
            static void show(){
                cout<<Person::city<<endl;
            }
            static     void show(Person *p);
    #endif
    };

    Person* Person::per= NULL ;
    #if 0
    void Person::setName(string name){
        this->name = name;
    }

    void Person::setAge(int age){
        this->age = age;
    }
    void Person::show(Person *p){
        cout<<p->name<<endl;
        cout<<p->age<<endl;
        cout<<p->city<<endl;

    }

    string Person::city = "sichuang";
    #endif
    int main(int argc,char *argvp[]){

        Person *per2= NULL;
        per2 = Person::getInstance();
    #if 0
        Person *per1 = NULL;

        per1 = Person::getInstance();
        per2->name = "zsf";
        per2->age  =23;

    #if 0
        per1->name ="hello";
        per1->age  = 34;
        cout<<per1->name<<endl;
        cout<<per1->age<<endl;
    #endif
        cout<<per2->name<<endl;
        cout<<per2->age<<endl;

    /*
        Person::show();
        Person::show(new Person());
        cout<<"==================="<<endl;

        Person *per  = new Person();
        per->name = "hello";
        per->age  = 23;
        per->city = "chengdu";
      
        cout<<per->city<<endl;
        per->show(per);
        return 0;
        */
    #endif
        return 0;
    }

    #if 0
    #include <iostream>
    using namespace std;

    class Singelton
    {
        public:
            static Singelton* GetInstance()
            {
                if (instance_ == NULL)
                {
                    instance_=new Singelton();
                }
                return instance_;
            }

        private:
            Singelton()
            {
            }
            static Singelton* instance_;
    };

    Singelton *Singelton::instance_;
    int main()
    {

        Singelton *s=Singelton::GetInstance();
        Singelton *s2=Singelton::GetInstance();

        cout<< s <<endl;
        cout<< s2 <<endl;
    }
    #endif

    #if 1
    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>

    using namespace std;
    #define MAX_OBJ_NUM  5
    class SimpleTest{
        private:
            SimpleTest(){}
            static SimpleTest *simple;
            int id;
            string info;
            static int count;
        public:

    //同java 静态方法只能用静态变量。

            static SimpleTest *getInstance(){
                if(count!= MAX_OBJ_NUM){
                    simple = new SimpleTest();
                    count++;
                    return simple;
                }else{
                    cout<<"Enough"<<endl;
                    return NULL;
                }

            }
    #if 1
            void setId(int id){
                this->id = id;
            }
            void setInfo(string info){
                this->info = info;
            }
            
            int getId(){
                return this->id;
            }
            string getInfo(){
                return this->info;
            }

    #endif
    };
    //静态变量初始化不同于java。

    SimpleTest *SimpleTest::simple = NULL;
    int  SimpleTest::count = 0;

    int main(int argc,char *argv[]){
        SimpleTest *simple1 = SimpleTest::getInstance();
        cout << simple1 <<endl;
        simple1->setId(23);
        cout<<simple1->getId()<<endl;

        SimpleTest *simple2 = SimpleTest::getInstance();
        cout<< simple2 <<endl;
        simple2->setId(34);
        cout<<simple2->getId()<<endl;

        SimpleTest *simple3 = SimpleTest::getInstance();
        cout<< simple3 <<endl;
        simple3->setId(34);
        cout<<simple3->getId()<<endl;

        SimpleTest *simple4 = SimpleTest::getInstance();
        cout<< simple4 <<endl;
        simple4->setId(34);
        cout<<simple4->getId()<<endl;
       
        SimpleTest *simple5 = SimpleTest::getInstance();
        cout<< simple5 <<endl;
        simple5->setId(34);
        cout<<simple5->getId()<<endl;

        SimpleTest *simple6 = SimpleTest::getInstance();
        if(simple6==NULL){
            exit(EXIT_FAILURE);
        }
        cout<< simple6 <<endl;
        simple6->setId(34);
        cout<<simple6->getId()<<endl;
        return 0;
    }
    #endif


     
  • 相关阅读:
    以淘宝商品搜索漫谈查询条件的排序对效率的影响(SQL查询性能优化,附调优(性能诊断)DMV)
    监测ASP.NET MVC网站
    在WCF中使用Ninject轻量级IOC框架 之 SOAP风格服务
    敏捷——SCRUM
    《scrum敏捷软件开发》读书笔记
    【双旦献礼】PortalBasic Java Web 应用开发框架 v3.0.1 正式发布(源码、示例及文档)
    前端架构
    Android源码学习之如何使用eclipse+NDK
    mass Framework attr模块 v3
    【转】iOS 6版本与之前版本差异总结
  • 原文地址:https://www.cnblogs.com/zhangsf/p/3333556.html
Copyright © 2011-2022 走看看