1.当成员方法没有访问非静态的成员变量时,该方法应定义成静态的。
当类中的方法都是静态的,所以该类是不需要创建对象的,为了防止创建对象浪费空间,可以将构造函数私有化,从而强制限制创建对象。
2.设计模式:对问题行之有效的解决方式,其实就是一种思想,并没有固化到某种语言。
3.单例设计模式:就是可以保证一个类在内存中的对象的唯一性。
比如对于多个程序使用同一个配置信息对象时,就需要保证对该对象的唯一性。
如何保证对象的唯一性?
1,哺育本能需其他程序使用new创建该类对象。
2,在该类内部创建一个本类实例(对象)。
3,对外提供一个方法让其他程序可以获取该对象。
具体步骤:
1,私有化该类的构造函数
2,通过new创建一个本类对象,私有,静态的!
3,定义一个公有的,静态的方法,将创建的对象返回。getInstance();
两种单例设计模式的方案实现!1,类一加载,对象就创建。(饿汉式)2,类加载进来时没有对象,只有调用getInstance()方法时才创建对象。即:延迟加载形式(懒汉式)
4.继承:
好处:
1.提高了代码的复用性
2.是类与类之间产生关系
3.给第三特征多态提供前提
分析过程中不断找到共性抽取而出的是父类
在java中仅支持单继承,但对c++中的多继承机制进行了改良————实现:单继承,多实现
java支持多重(多层)继承。这就使java存在继承体系。
当要使用一个继承体系时首先查看该体系顶层类,了解该体系的基本功能。然后创建该体系中的最底层子类,完成功能的使用。
单继承:一个子类只能有一个直接的父类。多继承:可以有多个直接父类。不支持多继承是因为多继承会产生调用的不确定性!像多个父类中有相同的成员(变量或方法)时会产生不确定。
什么时候定义继承?
当类与类之间存在着所属关系时就可以定义继承。x是y中的一种,x就可以继承y。
子父类中成员特点:
1.当本类的成员和局部变量重名时用this区分。当子类与父类变量重名时用super区分。
super与this用法相似:this代表代表一个本类对象的引用。而supre代表的是一个父类的空间。因为此时不存在父类对象!
2.子类不能直接访问父类中的私有变量,但可以间接访问!继承了私有变量,但需要接口访问。
3.当子父类中出现成员函数一模一样的情况(父类方法不为私有或子类父类方法都是静态时),会运行子类的函数,这种现象被称为覆盖现象(重写),函数的两个特性:覆盖(在子类中)和重载(在同一类中)。
注意理解:覆盖特点:子类方法覆盖父类方法时,子类权限必须要大于等于父类权限。这样定义的原因是由于类的向上转型和java程序设计维护的原因。
静态的只能覆盖静态的或者被静态的所覆盖!
什么时候使用覆盖操作?
当类中的方法都是静态的,所以该类是不需要创建对象的,为了防止创建对象浪费空间,可以将构造函数私有化,从而强制限制创建对象。
2.设计模式:对问题行之有效的解决方式,其实就是一种思想,并没有固化到某种语言。
3.单例设计模式:就是可以保证一个类在内存中的对象的唯一性。
比如对于多个程序使用同一个配置信息对象时,就需要保证对该对象的唯一性。
如何保证对象的唯一性?
1,哺育本能需其他程序使用new创建该类对象。
2,在该类内部创建一个本类实例(对象)。
3,对外提供一个方法让其他程序可以获取该对象。
具体步骤:
1,私有化该类的构造函数
2,通过new创建一个本类对象,私有,静态的!
3,定义一个公有的,静态的方法,将创建的对象返回。getInstance();
两种单例设计模式的方案实现!1,类一加载,对象就创建。(饿汉式)2,类加载进来时没有对象,只有调用getInstance()方法时才创建对象。即:延迟加载形式(懒汉式)
4.继承:
好处:
1.提高了代码的复用性
2.是类与类之间产生关系
3.给第三特征多态提供前提
分析过程中不断找到共性抽取而出的是父类
在java中仅支持单继承,但对c++中的多继承机制进行了改良————实现:单继承,多实现
java支持多重(多层)继承。这就使java存在继承体系。
当要使用一个继承体系时首先查看该体系顶层类,了解该体系的基本功能。然后创建该体系中的最底层子类,完成功能的使用。
单继承:一个子类只能有一个直接的父类。多继承:可以有多个直接父类。不支持多继承是因为多继承会产生调用的不确定性!像多个父类中有相同的成员(变量或方法)时会产生不确定。
什么时候定义继承?
当类与类之间存在着所属关系时就可以定义继承。x是y中的一种,x就可以继承y。
子父类中成员特点:
1.当本类的成员和局部变量重名时用this区分。当子类与父类变量重名时用super区分。
super与this用法相似:this代表代表一个本类对象的引用。而supre代表的是一个父类的空间。因为此时不存在父类对象!
2.子类不能直接访问父类中的私有变量,但可以间接访问!继承了私有变量,但需要接口访问。
3.当子父类中出现成员函数一模一样的情况(父类方法不为私有或子类父类方法都是静态时),会运行子类的函数,这种现象被称为覆盖现象(重写),函数的两个特性:覆盖(在子类中)和重载(在同一类中)。
注意理解:覆盖特点:子类方法覆盖父类方法时,子类权限必须要大于等于父类权限。这样定义的原因是由于类的向上转型和java程序设计维护的原因。
静态的只能覆盖静态的或者被静态的所覆盖!
什么时候使用覆盖操作?
当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但需要定义子类中该功能的特有内容时就需要使用覆盖操作来完成。
/*
单例设计模式1:饿汉式
*/
class A
{
int i=10;
private static A a = new A();
A(){}
public static A getIntancea()
{
return a;
}
}
/*
单例设计模式2:懒汉式
*/
class B
{
int t=2;
private static B b = null;
B(){}
public static B getIntanceb()
{
if(b==null)b=new B();
return b;
}
}
public class J630
{
public static void main(String [] args)
{
A a1 = A.getIntancea();
A a2 = A.getIntancea();
System.out.println(a1.i);
System.out.println(a2.i);
a1.i=100;
System.out.println(a2.i);
B b1 = B.getIntanceb();
B b2 = B.getIntanceb();
System.out.println(b1.t);
System.out.println(b2.t);
b1.t=1;
System.out.println(b2.t);
}
}