类:实体的一个抽象和模板
一,类的组成成分
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:::