一.类的定义格式
1.1定义一个狗类
class Dog{
public String name;//实例变量name
public String color;//实例变量color
public static String food="狗粮";//类变量food
public void barks(){//实例方法 barks
System.out.println("汪汪");
}
public void wag(){//实例方法 wag
System.out.println("摇尾巴");
}
public static void eat(){//类方法eat
System.out.println("吃"+Dog.food);//类变量使用方法 类名.类变量名
}
}
1.2注意
1.一般一个文件中只定义一个类
2.main方法所在的类一般要使用public修饰
3.public修饰的类名必须要和文件名相同
4.public修饰的类名不能随便修改
二.类的实例化
类 类似定义了一种新的类型,用类类型创建对象的过程叫实例化
2.1一个简单的类
class Dog{
public String name;//实例变量name
public String color;//实例变量color
public static String food;//类变量food
public Dog(){
}
public Dog(String name,String color,String food){//构造方法赋值
this.name=name;
this.color=color;
Dog.food=food;
}
public void barks(){//实例方法 barks
System.out.println("汪汪");
}
public void wag(){//实例方法 wag
System.out.println("摇尾巴");
}
public static void eat(){//类方法eat
System.out.println("吃"+Dog.food);//类变量使用方法 类名.类变量名
}
}
public class BlogDemo1 {
public static void main(String[] args) {
Dog dog3 = new Dog("旺财","炫彩金","黄金狗粮");//使用构造方法对对象的属性赋值
Dog.eat();//类方法的使用 类名.静态方法名
dog3.barks();
dog3.wag();
Dog dog1 = new Dog();//通过new实例化对象dog1
dog1.name="阿黄";//实例变量通过对象调用 对象名.实例变量
dog1.color="黄";
Dog.eat();//类方法的使用 类名.静态方法名
dog1.barks();//实例方法通过对象调用 对象名.实例方法
dog1.wag();
Dog dog2 = new Dog();//通过new实例化化对象dog2
dog2.name="大黑";
dog2.color="黑色";
Dog.eat();//类方法的使用 类名.静态方法名
dog2.barks();
dog2.wag();
}
}
1.类中 方法外的变量 可以不初始化值,未初始化的值有其默认值 (具体的默认值可以见我java数组的表),而方法中的变量必须有其初始值
2.2构造函数
1.构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
2. 构造方法:名字与类名相同,没有返回值类型,设置为void也不行,一般情况下使用public修饰,在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
3.类中没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法。 但如果定义构造方法后,编译器不会生成一个不带参数的构造方法,类中只有自己定义的构造方法
2.3对象的内存模型
对象是引用类型,内存类型和数组很相似,大家可以去看看博主的数组的内存空间内容。
1.声明对象是的内存模型
当用类声明一个对象时,如 Dog dog;
dog的内存空间还没有任何数据,这时的dog是一个空对象,空对象不能使用。即 dog的值为null。
2.为对象分配变量后的内存模型 eg:
dog = new Dog();
此时 name 和 color 这些实例变量作为对象的属性在堆上开辟空间,
new运算符将和类的构造方法计算一个叫引用的值赋值给 dog