目录
- 类的定义格式
- 如何去自定义
- this的引用
- 如何初始化对象
- 构造方法的定义和使用
类的定义格式
class ClassName{
//属性(成员变量)
//行为(成员方法)
}
1>变量与方法
1.成员变量:普通成员变量
静态成员变量
2.成员方法:普通成员方法
静态成员方法
其中的静态变量与方法,在后面的封装里面讲述
注意点
1>不建议一个Java文件里面创建多个类,建议是创建一个类放在一个Java文件里面
2>main方法所有的类一般要使用public修饰
3>public修饰的类必须和文件名相同
4>不要轻易去修改public修饰的类的名称,如果要修改就用工具来(在idea里面,就是先选中名字然后右键,点击refactor,再点击rename就可以改名,但是这个是只针对java只有一个类的时候)
如何去自定义
class PetDog{
//这里就是属性
public String name;
public String color;
//这下面是方法,也叫行为
public void barks(){
System.out.println(name + "旺旺~~~~");
}
public void wag(){
System.out.println(name + "摇尾巴~~~");
}
}
public class Test {
public static void main(String[] args) {
PetDog petDog = new PetDog();
petDog.name = "小黄";
petDog.color = "黄色";
System.out.println(petDog.name);
petDog.barks();
petDog.wag();
}
}
在这里面的话,我们在上面创建了一个类,我们去使用这个类的时候,我们是要去通过new实例化一个对象, 就是 PetDog petDog = new PetDog();这个, 我们在实例化的时候不止可以实例化一个,可以实例化无数个对象
然后里面的petDog.name = “小黄”;和 petDog.color = “黄色”;,就是我们在给我们实例化的对象附一个值,取名为小黄,颜色为黄色,
在后面的petDog.barks();和petDog.wag();这两个里面,因为我们那前面的时候就给名字和颜色进行初始化了,所以我们直接引用这两个方法就可以了,里面的name已经被赋值为小黄了
最后的运行结果就是这样的
注意
1>new关键字是用于创建一个对象的实例
2>使用 . 来访问对象中的属性和方法
3>同一个类可以创建多个实例
this的引用
public class Date {
public int year;
public int month;
public int day;
public void setDate(Date this, int y,int m,int d){
this.year = y;
this.month = m;
this.day = d;
}
public static void main(String[] args) {
Date date = new Date();
date.setDate(1999,1,1);
Date date1 = new Date();
date1.setDate(1899,1,1);
}
}
this的特征:
1>this的类型对应类 类型引用,即哪个对象调用就是哪个对象引用类型
2>在成员方法中,this只能引用当前对象,不能再引用其他对象
3>在一个成员方法中,可以用this来调用另一个成员方法
只有一个方法,如何知道给哪个对象赋值??
答:通过Date this以及this.year= y这几个来进行判断给谁赋值
如何初始化对象
1>就地初始化
定义成员变量的时候,就直接初始化
2>构造方法:
注意点:
1.无返回值
2.方法名必须和类名相同
3.在整个对象的生命周期内,只调用一次(只有在对象实例化的时候才会调用)
class Student{
public String name;
public int age;
public Student(){
this.name = "张三";
this.age = 9;
}
}
像图中的public Student(){ }.就是一个构造方法,
实例化对象的关键两步?
1>为对象分配内存
2>调用合适的构造方法
注意这个合适!!!
因为我们在代码中,只写了成员变量,没有写任何一个构造方法的时候,java中会自动提供一个不带参数的构造方法,若是有存在构造方法,编译器就不会提供(总结就是救急不救穷);
作用:
对,对象中的成员进行初始化,并不负责开辟空间
构造方法的定义和使用
public Student(){
this.name = "张三";
this.age = 9;
System.out.println("student().....");
}
public Student(String name,int age){
this.name = name;
this.age = age;
System.out.println("Student(String,int).......");
}
上图这种,就存在两个构造方法
注意:
1>构造方法可以有多个,且构成重载关系
2> 当上面这两种情况都存在的时候,可以通过传参的方式来进行初始化
Student student = new Student("悟空",19);
或者如果使用idea的话,可以先右键,再Generate,然后constructor快捷生成构造方法
构造方法中,可以通过this来调用其他的构造方法来简化代码
例如
class Student{
public String name;
public int age;
public Student(){
this("张三",9);
}
public Student(String name,int age){
this.name = name;
this.age = age;
}
}
public class Test {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.name);
System.out.println(student.age);
}
}
可以像上面的代码一样,通过this来直接调用
但是1>只能出现在构造方法中
2>不能自己调用自己
3>只能出现在当前构造方法的第一行,如果有其他东西就会报错