DAY3
面向对象分析----类所包含的属性应该采用private封装起来,并用getter和setter方法取得和设置,所有的类与方法都不要直接输出,交给调用处输出,若有需要的话可以加入若干的构造方法。
public Person() {
System.out.println("调用无参构造"); } public Person(int id,String name,float salary){ this(); System.out.println("调用三参构造"); this.id = id; this.name = name; this.salary = salary; } public Person(int id, int age, String name, String gender, String position, Date birthday, float salary) { this(id,name,salary); this.id = id; this.age = age; this.name = name; this.gender = gender; this.position = position; this.birthday = birthday; this.salary = salary; }
输出
调用无参构造 调用三参构造 Person [id=1, age=23, name=张文濠, gender=男, position=worker, birthday=Wed Jan 04 00:07:00 CST 1989, salary=3500.0] 调用无参构造 调用三参构造 Person [id=2, age=0, name=张小文, gender=null, position=null, birthday=null, salary=3600.0]
构造方法用Private封装,则外部要实例化的时候会失败;
但是内部能够实例化成功;需要考虑的就是如何从外部取出instance对象;
可以讲instance生命成Static变量,则外部可以从类声明后在吧instance赋值给外部变量
但是为了实现封装性,最好把instance也封装起来,然后则可以用调用方法取得该对象;(加一个GETTER)
class Singleton{ static Singleton instance = new Singleton() ; // 在内部产生本类的实例化对象 private Singleton(){ // 将构造方法进行了封装,私有化 } public void print(){ System.out.println("Hello World!!!") ; } }; public class SingletonDemo03{ public static void main(String args[]){ Singleton s1 = null ; // 声明对象 s1=Singlenton.instance; s1.print(); } };
这样做的好处就是把实例化只进行一次,想象一下,声明N个对象,如果真的每一个都要实例化,就会很耗费资源,但是如果吧实例化封装在一个类中的话,就可以很节省资源;(这个就是单例设计模式);在入口处(构造函数)限制了实例化操作;
非要使用内部类的话可以用static声明内部类即可;而内部类使用到的参数也必须是Static,因为非Static方法不能访问static