类:实体的一个抽象和模板
一,类的组成成分
1,属性(成员变量)
2,方法(成员方法,函数)
3,构造器 (作用:创建类的对象,初始化对象的成员变量)
4,代码块 (作用 :)
通过class{ }来创建一个类
我们创建了Person这个类,这个类有着自己的属性 ,也就是Person的标志---->name age sex... 然后它还有自己的方法 ------> eat() sleep().....
class Person{
public String name;
public int age;
public String sex;
public void eat(){
System.out.println("Person : eat!!");
}
public void sleep(){
System.out.println("Person : sleep!!");
}
public void show(){
System.out.println("name :"+name+" age :"+age+" sex :"+sex);
}
}
接下来我们来创建一个Person类的对象
对象的创建:
1,为对象分配内存
2,调用合适的构造函数(构造函数不止一个)
Person person=new Person();//实例化一个对象
//person 是一个引用变量 指向Person类 的引用地址
如果没有显示的写一个构造函数的话,java在运行这句话时会调用系统默认的构造函数
public Person(){
}
类中方法和属性的调用
person.eat();
person.sleep();
通过对象名.方法名调用
二,对象初始化的四种方法
1,通过对象名.属性的办法(ps:此时属性应被public修饰)
Person person = new Person();
person.name="jiejie";
person.age=19;
person.sex="女";
person.show();
2,如果类中 属性为私有化(private修饰)
可以通过一系列set() get() 方法进行初始化
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
person.setName("fairy");
person.setAge(10000);
person.setSex("女");
person.show();
初始化结果
3,通过带参构造函数对对象进行初始化
public Person(String name,int age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
如果只写了这一个构造函数的话,那么执行原来那句创建对象就会报错
因为有显示的构造函数就不会调用默认的构造函数了
Person person = new Person("fairy1",999,"女");
person.show();
初始化结果
!!!构造函数可以有
Person person = new Person("fairy1",999,"女");
Person person1=new Person();
Person person2=new Person("fariy2",888);
person.show();
person1.show();
person2.show();
public Person(String name,int age,String sex){
this.name=name;//this 代表的是指向我当前对象的内存 因为调用构造函数的时候还没有成功创建一个对象
this.age=age;
this.sex=sex;
}
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
初始化结果为
我们也可以在构造函数内调用其他的构造函数
public Person(){//调用带有三个构造参数的构造函数 这句话必须第一行
this("fariy3",222,"女");
}
运行结果
4,通过代码块对类进行初始化
1> 静态代码块
private static int data;//静态成员变量 在方法区内
private static final int data1 = 29;
初始化结果
2>实例代码块
如果将构造函数屏蔽掉
初始化结果为
so:::