一.构造方法私有化
类的封装性不只体现在属性上,方法也可以被封装的,当然也包含了对构造方法的封装。如下实例:
public class Single {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SingleT s1 = SingleT.getSingleT();
SingleT s2 = SingleT.getSingleT();
SingleT s3 = SingleT.getSingleT();
s1.print();
s2.print();
s3.print();
}
}
class SingleT {
private static SingleT singleT = new SingleT();
private SingleT(){
}
public static SingleT getSingleT(){
return singleT;
}
public void print(){
System.out.println("你好,时间");
}
}
这种称为单例模式,无论程序怎么样运行,SingleT 类只有一个实例化对象存在。只要将构造函数私有化,就能控制实例化对象的产生。
二.对象数组
对象数组:包含了一组相关对象的数组。数组一定要先开辟空间,但是因为是引用数据类型,所以数组中每一个对象的值都是null值,使用时数组的每一个对象都要分别进行实例化操作。对象数组的声明如下:
类 对象数组名称[] = new 类[数组长度];
实例如下:
public class Array {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person1 per[] = new Person1[3];
for(int i = 0;i < per.length;i++){
System.out.print(per[i]+" ");
}
per[0] = new Person1("张三");
per[1] = new Person1("李四");
per[2] = new Person1("万物");
for(int i = 0;i < per.length;i++){
System.out.print(per[i].get()+" ");
}
}
}
class Person1{
private String name;
public Person1(String name){
this.name = name;
}
public String get(){
return this.name;
}
}
main方法中的String[] args就是对象数组。
三.内部类
在类中可以定义成员变量和方法,当然也可以定义类,这时类中定义的叫内部类,在外面的叫外部类,内部类定义格式为:
实例如下:
class Outer{
private String info = "大家好";
class Innter{
public void print(){
System.out.print(info);
}
};
public void fun(){
new Innter().print();
}
};
public class InnerDrmo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer outer = new Outer();
outer.fun();
}
}
内部类的存在其实已经破坏了一个类的基本结构,它的唯一好处就是可以方便的访问外部类中的私有属性。