类和对象的初步认识(构造函数)
Java是一门面向对象的编程语言(OOP) ,
面向对象程序三大的特点:封装,继承,多态
1.类:
class Person {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Person,是一个类,它的成员变量age是私有的,别人无法访问,但是Java提供了一系列的set,get方法去可以访问它的值;
public static void main(String[] args) {
Person person= new Person();
person.setAge(10);
System.out.println(person.getAge());
}
类先创建一个对象,然后通过对象去访问(对象创建的时候,首先要为对象分配内存
然后去调用合适的构造函数);
类和对象的关系应该是:类-----实例化------->对象
2.构造方法:
(1).构造方法格式
public 类名(…){
}
(2).构造方法的作用
给对象做初始化操作的,一般给成员变量赋值
(对象一被创建,就需要执行的操作)
(3).构造方法什么时候执行
new 对象的时候执行
class Person {
private int age;
private String name;
public Person() {//不带参数的构造函数 构造函数可以被重载
System.out.println("Person()");
this.age = 20;//this:指向当前对象的内存
this.name = "002";
}
public Person(String name,int age) {
System.out.println("Person(name,age)");
this.age = age;
this.name = name;
}
public Person(String name) {
System.out.println("Preson(name)");
this.name = name;
}
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
public static void main(String[] args) {
Person person = new Person();
System.out.println("===========");
System.out.println(person);
System.out.println("===========》");
Person person1 = new Person("003",22);
System.out.println(person1);
System.out.println("====》=======》");
Person person2 = new Person("004");
System.out.println(person2);
}
}
运行的结果为:
Person(name,age)
Person()
===========
Person{age=20, name='002'}
===========》
Person(name,age)
Person{age=22, name='003'}
====》=======》
Preson(name)
Person{age=0, name='004'}
new了一个新的对象preson,但并未给他定义参数值;同时它就调用合适的构造函数;定义的Person只有两个成员类变量,它会优先调用带有两个参数的构造方法;public Person(String name,int age)中并未给他赋值,所以它会继续调用无参的构造函数,将其初始化值赋予。所以打印的person值为:age=20,name=002;
而对于person1来说,因为Person person1 = new Person(“003”,22); new对象的时候,同时赋予了其中成员变量的值,所以它会直接调用带两个参数的成员变量并赋值,然后结束。
而对于person2来说,因为Person person2 = new Person(“004”); new对象时候,值给了它一个name的值,所以它会调用一个参数的构造函数public Person(String name);进行赋值。