class Demo1_Construct {
public static void main (String[] args) {
Person p = new Person();
// p.Person(); // 构造方法不能对象调用
p.show();
}
class Person {
private String name;
private int age;
// 构造方法
public Person() {
System.out.println("hello world");
return ;
}
public void show() {
System.out.println(name + '...' + age);
}
}
}
构造方法的重载及注意事项
A:案例演示
构造方法的重载
重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表
代码举例:
class Demo2_Person {
public static void main(String[] args) {
Person p1 = new Person();
p1.show();
System.out.println("---------------------");
Person p2 = new Person("张三",23);
p2.show();
System.out.println("---------------------");
Person p3 = new Person("李四",24);
p3.show();
}
}
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;
System.out.println("有参的构造");
}
public void show() {
System.out.println(name + "..." + age);
}
}
B:构造方法注意事项
a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
b:如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
注意:这个时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法
给成员变量赋值的两种方式的区别
A:setXxx()方法(用它更多,因为更加灵活)
修改属性值
B:构造方法
给对象中属性进行初始化
代码举例
class Demo3_Person {
public static void main(String[] args) {
Person p1 = new Person("张三",23);
//p1 = new Person("张天一",23); //这种方式看运行结果貌似是改名了,其实是将原对象变成垃圾
System.out.println(p1.getName() + "..." + p1.getAge());
System.out.println("--------------------");
Person p2 = new Person(); //空参构造创建对象
p2.setName("李四");
p2.setAge(24);
p2.setName("李鬼");
System.out.println(p2.getName() + "..." + p2.getAge());
}
}
/*
构造方法
给属性进行初始化
setXxx方法
修改属性值
这两种方式,在开发中用setXxx更多一些,因为比较灵活
*/
class Person {
private String name; //姓名
private int age; //年龄
public Person() { //空参构造
}
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;
}
}
创建一个对象的步骤
static关键字及内存图
没有static修饰的变量的代码及其内存图:
加了static修饰的变量代码及其内存图:
好处:多个对象可以共享一个变量
static关键字的特点
A:static关键字的特点
a:随着类的加载而加载
b:优先于对象存在
c:被类的所有对象共享
举例:咱们班级的学生应该共用同一个班级编号。
其实这个特点也是在告诉我们什么时候使用静态?
如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
举例:
饮水机(用静态修饰)
水杯(不能用静态修饰)
共性用静态,特性用非静态
d:可以通过类名调用
其实它本身也可以通过对象名调用。
推荐使用类名调用。
举例:
class Demo1_Static {
public static void main (String[] args) {
Person.country = "日本"; // 不是Person().country。并且嗲用name会失败。
System.out.println(Person.country); // 可以调用
}
}
class person {
String name;
static String country;
}