public class Person{ private int age; }
public class Person{ private int age; }
单例模式和多例模式很相似:
构造函数私有化
类内部一定会提供一个static方法来获得实例化对象
多例模式被枚举取代。
单例设计模式
构造函数私有化
外部无法产生实例化对象,只能通过static关键字获得。
饿汉式----》推荐----线程安全。
懒汉式
public class TestDouble {
public static void main(String[] args) {
Double x=1.1;
Double y=1.1;
System.out.println(x==y);//不仅比较对象地址,也比较对象值
System.out.println(x.equals(y));//只比较对象值
}
}
接口之间也可以继承!
一个类只能extends一个父类,但可以implements多个接口。
java通过使用接口的概念来取代C++中多继承。
与此同时,一个接口则可以同时extends多个接口,却不能implements任何接口。因而,Java中的接口是支持多继承的。
引用自:-----http://www.cnblogs.com/littlepanpc/p/3616300.html
代理模式:
一个接口,两个实现,其中一个实现是真实业务,另一个实现是辅助业务。
所有动作都由辅助代理,真实动作由真实业务发出。
然后利用代理工厂进行。
最常用的三大设计模式:
工厂模式
单例模式
代理模式
不错不错,对象比较,并不能直接用==来比较,而是通过比较对象所拥有的属性来比较对象。比较是否为空,比较是否是自己,比较对象所拥有的属性来比较对象。
OOA
OOD
OOP
封装
继承
多态
面向对象
面向过程
简单Java类;
写10个简单Java类,
要求每个类中必须至少5个属性。
类组成:属性、构造方法、普通方法。
类编写的时候,第一部分写属性;第二部分写构造方法、第三部分写普通方法。
实例化对象的产生格式:
类名称 对象名称 = new 类名称();
构造方法就是在使用关键字new时所调调用的方法。
默认的无参构造方法;
public Person();
构造方法:
构造方法可以为类中的属性进行初始化;
业务逻辑错误。
如age数值不合理。
利用private实现封装,最大的特征是,只允许本类访问,而不允许外部访问。
很少在方法上使用private。
对于private的属性,需要使用:
setter方法:主要用于进行属性内容的设置;
getter方法:主要用于属性内容的取得。
类的设计原则:
在编写类的时候,类中的所有属性必须使用private封装。而private封装的属性如果需要被外部所使用,那么就要按照格式定义相应的setter、getter方法。
Person per2 = per1;
未开辟新的堆内存;栈内存存储的地址指向同一堆内存。
修改per2的对象属性,然后输出per1的对象属性。
若使用per2 = per1 ;
会导致per2原来指向的堆类存会变成垃圾空间。
堆内存空间:保存真正的数据,堆内存保存的是对象的属性信息;
栈内存空间:保存的堆内存的地址,堆内存的操作权,简单理解可以为对象名称;
Person per = new Person();
new就是开辟新的堆内存;
per的地址存在栈内存中;
对象的属性的默认值保存在堆内存里;
name=null;
age=0;
分步建立对象;
Person per=null;
per在栈内存中;
per=new Person();
new开辟新的堆内存,并保存对象属性的默认值。
错误NullPointerException,都是引用数据错误,表示对象未实例化。
class Person{//定义一个类,类名称每个单词首字母要求大些
String name;
String age;
}
new会开辟内存。
声明并实例化对象;
类名称 对象名称 = new 类名称();
声明对象:
类名称 对象名称=null;
实例化对象:
对象名称 = new 类名称();
类与对象:
类本身属于引用数据类型。
所谓的类描述的就是一个共性特征;
对象指是一个具体的可以使用的事物。
在实际的开发过程中国,需要首先产生类,而后才可以产生对象。
类的组成:方法(操作的行为)、属性(变量,描述每一个对象的具体特点)
面向对象:
封装性:内部的操作对外部而言不可见;
继承性:在上一辈基础上继续发展;
多态性:利用多态性才可以得到良好的设计。
OOA面向对象分析、OOD面向对象设计、OOP面向对象编程
面向对象可以进行生活的抽象。
勘误:
return str.substring(0,1).toUpperCase + str.substring(1);
类的内存:
关键字new一定是开辟内存空间。
堆内存
栈内存