[零基础学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封装 ...
随机推荐
- Upgrading WebLogic Application Environments --官方文档
http://docs.oracle.com/cd/E13179_01/common/docs92/upgrade/dirstruct.html WebLogic Domain Directory S ...
- ASP.NET MVC Core的ViewComponent
MVC Core新增了ViewComponent的概念,直接强行理解为视图组件,用于在页面上显示可重用的内容,这部分内容包括逻辑和展示内容,而且定义为组件那么其必定是可以独立存在并且是高度可重用的. ...
- mysql备份 小结 (三种方式的详细解读)
备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据.那变化之后的呢?所以制定一个好的备份策略很重要 新建一个all.sqlvim all.sql在 ...
- n后问题
Description 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n×n格的棋盘上放置n个皇后,任何2个皇 ...
- 在 Azure Web 应用中创建 .NET 应用程序
本快速入门帮助你在数分钟内将你的第一个 ASP.NET Web 应用部署到 Azure 应用服务.完成本教程后,你将能够在云中启动并运行一个简单的 Web 应用.在本教程中完成的所有操作均符合1 元试 ...
- 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
转自: https://blog.csdn.net/eson_15/article/details/51487323 昨天把项目部署了一下,玩了玩,今天完善了一下购物车中修改商品数量就能局部 ...
- 获取java根目录,加载根目录下的文件
就两句代码 String filepath = System.getProperty("user.dir")+"/a.xlsx"; File file=new ...
- 使用admin lte 碰到访问Google字体的问题
下载了admin lte 的模板,运行的时候,发现很慢,看了一下console,发现adminlte.css里有import google的字体文件,众所周知的原因,无法访问,所以网页很慢,没办法,只 ...
- python中静态方法(@staticmethod)和类方法(@classmethod)的区别
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- Python之装饰器复习
一.什么是装饰器? 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 二.强调装饰器的原则: 1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 3:在遵循1和2 ...