JAVA——面向对象

DAY3

面向对象分析----类所包含的属性应该采用private封装起来,并用getter和setter方法取得和设置,所有的类与方法都不要直接输出,交给调用处输出,若有需要的话可以加入若干的构造方法。

 

  • Super关键字————子类调用父类中指定操作

 

  1. Person per2=new Person();//若父类没有无参构造函数此句不成立 public Person() {super();}
  2. 子类在实例化的时候会默认调用父类的无参构造函数,若要调用含参构造函数,必须super(参数1,参数2);
  3. 如果父类没有无参构造函数,则编译出错;
    例如:父类是person,只有含有name,age两个参数的构造函数,构造函数是person(String name,int age); 子类是student,构造函数有name,age,school三个参数,构造函数是student( String name,int age ,String School);就必须在student中的构造函数中加上Super(name,age),这样就可以明确调用父类中的构造函数了。否则会出现不能找到相应的构造函数。而实现处必须传进三个参数给Student类。
  • 与this的区别:this是从自身找,找不到在从父类中找,super是直接从父类中找(this和super都可以调用构造方法,都必须在首行,但不能同时出现)

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

    • main方法
      main方法传入的(String args[])的意思就是传入多少个参数,可以用args[].length属性判断传入多少个参数;

     

     

     

     

     

     

    你可能感兴趣的:(java)