DAY7
07.01构造方法Constructor
一、构造方法的概述及作用:给对象的数据(属性)进行初始化。
二、构造方法格式特点:
1.方法名与类名相同(大小也要与类名一致)。
2.没有返回值类型,连void都没有。
3.没有具体的返回值return。
注意事项:构造方法不能用对象调用。//p.Person();会报错。
07.02构造方法的重载
一、重载:方法名相同,与返回值类型无关,只看参数列表。
二、构造方法注意事项
1.未给出构造方法,系统将自动提供一个无参构造方法。
2.当给出构造方法,系统将不再提供默认的无参构造方法。无参构造建议自己手动搭建。
举例:
class Day7_Test1 {
publicstatic void main(String[] args){
Personp1=new Person();
p1.show();
System.out.println("*********************");
Personp2=new Person("张三",28);//相当定义p2
p2.show();//括号内无需填写,起调用。
}
}
class Person {//class Person与classDay7_Test1是平级,互不统辖
privateString name;
privateint age;
publicPerson(){
System.out.println("空参构造");
}
publicPerson(String name,int age ){
this.name=name;
this.age=age;
System.out.println("有参构造");
}
public void show(){//该方法无需返回,数据类型为void
System.out.println(name+"....."+age);
}
}
07.03区别给成员赋值两种方法的区别
一、直接赋值将原对象变成垃圾。
二、setXxx构造方法给属性进行初始化,修改属性值,而不创建新的对象。
举例:
class Day7_Test2 {
publicstatic void main(String[] args){
Personp1=new Person("蔡阳",24);
//p1=new Person("刘恩仕",25);该方法一般是直接将原对象变成垃圾。
System.out.println(p1.getName()+"....."+p1.getAge());
System.out.println(".................");
Person p2=new Person();
p2.setName("刘恩仕");
p2.setAge(24);
System.out.println(p2.getName()+"....."+p2.getAge());
p2.setAge(25);//构造方法给属性进行初始化,用setXxx修改属性值。
System.out.println(p2.getName()+"....."+p2.getAge());//(p2.getName()调用方法
}
}
class Person {//class Person与class
Day7_Test1是平级,互不释统辖
privateString name;
privateint age;
publicPerson(){
}
publicPerson(String name,int age ){
this.name=name;//注意this的调用
this.age=age;
}
publicvoid setName(String name){//setXxx括号内的内容,记住格式
this.name=name;
}
publicString getName(){
returnname;
}
publicvoid setAge(int age){
this.age=age;
}
publicint getAge(){
returnage;
}
}
07.04学生类、手机类的练习思路
一、分析成员变量:品牌、价格等
二、构造方法:无参、有参
三、成员方法:
1.setXxx和getXxx;
2.show
07.05如何创建对象
一、Student.class加载进内存。
二、声明一个Student类型引用。
三、在堆内存创建对象。
四、给对象中属性默认初始化值。
五、属性进行显示初始化。
六、构造方法进栈对对象中的属性赋值,构造方法弹栈。。
七、将对象的地址值赋值给s.
07.06 static关键字的特点
一、随着类的加载而加载。
二、优先于对象存在。
三、被类的所有对象共享。(共性用静态,特性用非静态)
注意事项:
1.在静态方法中是没有this关键字的。
2.静态方法只能访问静态的成员变量和静态的成员方法,而非静态方法两者均可。
07.07静态变量与成员变量的区别
定义:静态变量也叫类变量,成员变量也叫对象变量
一、所属不同
1.静态变量属于类,也称为类变量。
2.成员变量属于对象,也稀烂实例对象。
二、内存中的位置不同
1.静态变量存储于方法区的静态区。
2.成员变量存储于堆内存。
三、出现时间不同
1.静态变量随着类的加载而加载,随着类的消失而消失。
2.成员变量随着的对象的创建而存在,随着对象的消失而消失。
四、调用不同
1.静态变量可以通过类名调用,也可以通过对象调用。
2.成员变量只能通过对象名调用。
07.08main方法格式的详细解释
Public:被jvm调用,权限足够大。
Static:被jvm调用,不要创建对象,直接类名,调用即可。
Void:被jvm调用,不需要任何返回值。
Main:只有这样写才能被jvm识别,main不是关键字。
String[] args:以前是用来接收键盘录入的。