[零基础学JAVA]Java SE面向对象部分.面向对象基础(03)
2.单例模式的使用。
3.构造方法的私有化。
4.string的使用,两种构造的不同。
· 数组的长度:数组名称.length 这个没()哈~~
· 字符串的长度:调用的是里面的方法:字符串对象.length() 这个有()哈~
Java:
//静态变量可以在定义时初始化,是所有对象共同产生的
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);
}
}
#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;
}
#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
[零基础学JAVA]Java SE面向对象部分.面向对象基础(03)的更多相关文章
- 零基础学python习题 - Python必须知道的基础语法
1. 以下变量命名不正确的是(D) A. foo = the_value B. foo = l_value C. foo = _value D. foo = value_& 2. 计算2的38 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- 零基础学Java第五节(面向对象一)
本篇文章是<零基础学Java>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...
- 零基础学Java第六节(面向对象二)
本篇文章是<零基础学Java>专栏的第六篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 继承 创建一个Person类 我们 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类
099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...
- 101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联——方案二
101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联--方案二 本文知识点:通过方法实现学生类与 ...
- 零基础学Java,PayPal技术专家手把手带你入门
在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...
- 零基础学Java第三节(基本输入输出)
本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
随机推荐
- 企业如何选择最佳的SSL
如果你的企业有意采购SSL,那么本文可以给一个很好的方向.在本文中,我们将先简要介绍SSL定义及其工作原理,并探讨目前各种可用的SSL证书类型以及企业如何选择最佳的SSL. SSL定义 SSL及传输层 ...
- 498_Diagonal-Traverse
目录 498_Diagonal-Traverse Description Solution Java solution Python solution 1 Python solution 2 Pyth ...
- Linux笔记-Linux命令初解2
在看linux过程中,文件属性管理是一个难点,因而作为初学者的我来说,我直接将其放在后面来慢慢研究,因而我个人觉得先学习后面一些知识点之后,回过头来将一些你所不懂的去解透,这是极好的意见事情.对了,我 ...
- RabbitMQ---7、常见参数含义
简介 本节主要讨论队列声明的各个参数 queueDeclare(String queue, boolean durable, boolean exclusive, Map<String, Obj ...
- WPF实现动画的几种方式及其小案例
WPF实现动画的方式: 基于计时器的动画 建立一个定时器,然后根据其频率循环调用函数或者一个事件处理函数,在这个函数中可以手工更新目标属性,直到达到最终值,这时可以停止计时器. 案例: 效果图: XA ...
- ashx+jsonp+document.referrer
-- 一年前学的JSONP 跨域,一年后的今天相关知识点基本忘光.花了一天时间重新学习,再次感谢各位前辈的帖子,特此记录如下. --html <!DOCTYPE html PUBLIC &quo ...
- jQuery 关于ajaxfileupload.js插件的逐步解析(ajaxfileupload.js第二弹)
如果你看了上一篇<ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹)>的话,应该就知道我是逼不得已要认真学 ...
- 最新sublime Text3 注册激活码
sublime build 3103注册码 Enter License -- BEGIN LICENSE --Ryan ClarkSingle User LicenseEA7E-8124792158A ...
- DOM基础代码练习(一)
上一篇介绍了一下DOM的一些基础的知识,这里我整理了一些有关上一篇知识点的一些封装函数. 1.遍历元素节点 function retChild(node) { var child = node.chi ...
- jQuery轮播图(一)轮播实现并封装
利用面向对象自己动手写了一个封装好的jquery轮播组件,可满足一般需求,不仅使用简单且复用性高. demo:点此预览 代码地址:https://github.com/zsqosos/componen ...