Java基础第七讲

一、构造方法


1.作用


   可以给对象的属性进行初始化.


2.格式


   1)方法名与类名相同(包括字母的大小写)


   2)没有返回值类型和void


   3)没有具体的返回值


3.构造方法的重载


   构造方法也可以重载,就是说可以有相同名字的方法,用参数列表来区分它们.


构造方法分为有参构造方法和无参构造方法.有参方法是用来给对象属性复制用的.
无参构造方法是在不需要给对象属性赋值的时候,来奖励对象调用方法用.如果没有
自己做出构造方法的话,系统会自动给我们一个无参方法来用,但是如果我们做了一
个有参的构造方法,系统将不会给我们构造方法,如果还需要使用无参方法,我们只
能自己在写出无参构造方法.


class Demo {
	public static void main(String[] args) {
		Person p1 = new Person();							
		p1.setName("张三");								
		p1.setAge(18);									


		System.out.println(p1.getName() + "," + p1.getAge());


		Person p2 = new Person("李四",24);			


		System.out.println(p2.getName() + "," + p2.getAge());
	}
}


class Person {
	private String name;
	private int age;
	
	public Person() {										//空参的构造方法
		System.out.println("空参构造");
	}


	public Person(String name,int age) {					//有参构造
		this.name = name;
		this.age = age;
	}




	public void setName(String name) {
		this.name = name;
	}


	public String getName() {
		return name;
	}


	public void setAge(int age) {
		this.age = age;
	}


	public int getAge() {
		return age;
	}
}



4.成员方法


成员方法可以根据返回值的不同而设立方法,如返回值是void或者有明确返回值的方法.还可以根据形式参数分为有参方法和无参方法.


class Demo3 {
	public static void main(String[] args) {
		Demo d = new Demo();
		int sum = d.add(10,20);
		System.out.println(sum);
		d.add(10,20);


	}
}




class Demo {




	public int add(int a,int b) {
		return a + b;
	}
}



二、static关键字


1.特点


   static关键字随着类的加载而加载,优先于对象的存在,被类的所有对象共享.如果某个成员变量是被所有对象共享的,那么他就iuyinggai设定为静态的.比如我们班同学的国籍.
它可以通过类名调用,也可以用对象名调用.推荐使用类名调用,因为对象会开辟新的空间,占用内存,用完后会产生垃圾.


class Demo1_Static {
	public static void main(String[] args) {
		Person p = new Person();
		p.name = "张三";
		p.country = "中国";


		p.speak();
					
	}							
}


class Person {
	String name;									
	static String country;							


	public void speak() {
		System.out.println(name + "," + country);
	}
}

2.注意事项


   在静态的方法中,没有this关键字,因为静态是随着类的加载而加载的,this是随着对象的创建而存在的,而静态方法是在对象之前存在的.
静态方法只能访问静态的成员变量或静态的成员方法.非静态方法中,成员变量可以是静态的也可以使非静态的.成员方法可以使静态的成员方法,也可以是非晶态的成员方法.


3.静态变量和成员变量的区别


   所属不同:静态变量属于类,所以也被称为类变量.成员变量属于对象,所以也称为实例变量.


   内存中位置不同:静态比昂两存储于方法区的静态区.而成员变量存在堆内存中.


   内存中的出现时间不同:静态变量随着类的加载而加载,随着对象的消失而消失.


   调用的不同:静态变量可以通过类名调用,也可以通过对象名调用.成员变量只能通过对象名调用.


class Demo2_Static {
	public static void main(String[] args) {
		
		
		Demo.print2();
	}
}


class Demo {
	int num1 = 10;							
	static int num2 = 20;					


	public void print1() {					
		System.out.println(this.num1);			
		System.out.println(num2);
	}


	public static void print2() {			
					
		System.out.println(num2);			
	}
}



猜你喜欢

转载自blog.csdn.net/nannan1989yue/article/details/45233615