一.使用class来定义类
class 类的名称{
// 属性 成员属性,对象属性
// 方法 成员方法,对象方法
}
例:定义Person类
class Persong{
// 属性
String name; //姓名
int age; // 年龄
String sex; // 性别
public void eat(){} // 吃饭行为 - 成员方法,行为和具体的对象相关
public void sleep(){} // 睡觉行为- 成员方法
一个源文件只能存在一个主类 public class
二.构造方法
Dog dog = new Dog();
此时定义了一个Dog类,当执行new时就会在堆上开辟一个空间。
class Dog{
String name;
String color;
三.调用构造方法为每个成员属性赋初始值
class Dog{
String name = "15";
String color = "棕色";
成员变量的所有赋值操作都是在构造方法中进行的。
四.关键词this
1.使用this修饰成员变量
如果没有this修饰,无法确定这一个String类型到底是给name还是color。
所以修改为
Dog(String name){
this.name = name;
this后的name是属性中的name,后面的name是形参name 是用户定义的name。
2.this修饰方法
Ⅰ.表示直接调用类中的方法。
Ⅱ.调用构造方法.
如上图代码,当其他方法是一个方法的子集时,则可以直接在母集中调用,这样避免了重复调用。
但是有两个注意事项:
A:this构造方法调用必须写在构造方法的首行;
这样书写极为则为错误,需要将this();放在首行。
B:this的构造方法不能成环,因为成环则会无限调用。
改代码则成环,第三个方法调用第二个,第二个调用第一个,第一个又调用第二个,所以无限循环。
五.static关键字
1.static修饰属性,称之为静态的类属性。
当static修饰属性时,可以通过类直接调用,并且当static修饰一个属性时,这个属性需要为与具体对象无关的属性,比如年龄、名字、性别都需要具体对象密切相关,而国籍则不同,只要知道你是哪个国家的人,就知道了你的国籍。
当j1 = null;
即便j1为null,但是当j1.+属性,还是可以调用属性,是因为此时可以视为使用静态类调用,引用值为null时,只有调用成员方法或者成员变量时才会出现NPE异常,静态变量或者方法不会报错。
2.static修饰的静态域和成员域之间的关系
可以在成员方法中调用静态属性或方法,但是反之则不行。
图中代码是在成员方法中调用静态属性,没有报错。
反过来调用就报错了。
六.代码块
1.普通代码块
直接定义在方法内部,不加任何修饰{}。
2.构造块
直接定义在类中使用{}的代码块。
并且在执行代码时,构造块优先于其他构造方法
3.静态代码块
而且主类中的静态代码块会优先于主方法执行。