目录
- 类的定义格式
- 如何去自定义
- 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>只能出现在当前构造方法的第一行,如果有其他东西就会报错