我们都知道,Java是一门面向对象的语言。谈到面向对象,就离不开类与对象。
把一系列对象的共同属性和行为集合在一起,形成的概念模型就是类。也就是说,类是对象的抽象定义,对象是类的具体实例。对象的特征称为对象的属性,对象的行为称为对象的方法

一.类的定义

对象由其属性和方法组成,类表达的是对象的结构。属性和方法称为类的成员。类的属性,描述类的特征,称为类的数据成员,也叫成员变量。类的方法用来描述行为,称为方法成员。

类的语法

[类的修饰符] class 类名{
[修饰符] 属性类型 属性名;
[修饰符] 方法返回值 方法名;
}
class 是定义了类的关键字,类名首字母一般大写,一个文件中只能有一个public修饰的类,并且这个类要与文件名相同。

例如:编写一个狗狗类,属性有:姓名,种类,年龄。方法有:吃东西,玩。

public class Dog{
    public String name;
    public String kind;
    int age;
    public void eat(String name){
        this.name = name;
        System.out.println(name + "正在吃");
    }
    public void play(String name){
        this.name = name;
        System.out.println(name + "正在玩");
    }

二.类的应用

1.类的实例化

类可以看作是自定义的数据类型,因此根据类也可以声明变量,这就是对象。类的实例化就是给对象分配内存空间,要用到new关键字。具体语法是:

类名 对象名 = new 类名()

例如:

Dog daHuang = new Dog();

daHuang就是Dog的一个对象引用,上面这行代码完成了Dog类的一次实例化。通过这个对象引用可以访问类中的属性和方法,不过要受到访问权限的控制。具体语法是:
对象名.属性名
对象名.方法名(参数列表)

演示:调用对象访问类的成员

public class Dog{
    public String name;
    public String kind;
    int age;
    public void eat(String name){
        System.out.println(name + "正在吃");
    }
    public void play(String name){
        System.out.println(name + "正在玩");
    }
    public static void main(String[] args) {
        Dog daHuang = new Dog();
        Dog aHei = new Dog();
        System.out.println(daHuang.name);
        System.out.println(aHei.name);
        daHuang.eat("大黄");
        aHei.play("阿黑");
    }
}

输出结果为:
null
null
大黄正在吃
阿黑正在玩
分析:由于没有初始化name,通过对象访问name输出就输出了默认值null。

2.this关键字

如果局部变量名与成员变量名重名时(如上面的例子),在方法中优先使用局部变量。如果要使用重名的成员变量是,可以加上this.关键字。this表示的当前类的当前对象。
演示:

public class Dog{
    public String name = "123";
    public String kind;
    int age;
    public void eat(String name){
        System.out.println(name + "正在吃");
    }
    public void play(String name){
        System.out.println(this.name + "正在玩");
    }
    public static void main(String[] args) {
        Dog daHuang = new Dog();
        Dog aHei = new Dog();
        System.out.println(daHuang.name);
        System.out.println(aHei.name);
        daHuang.eat("大黄");
        aHei.play("阿黑");
    }
}

输出结果:
123
123
大黄正在吃
123正在玩
分析:初始化了name=123。创建两个对象daHuang和aHei。输出daHuang.name和aHei.name,由于name被初始化过,就输出初始化的值123. 通过daHuang调用eat(),传进参数"大黄",相当于eat()方法中name为"大黄",this.name依旧为123,下面同理。

梳理一下,本文为大家介绍了类和对象的定义和简单应用,还有this关键字的使用,下一次的文章继续为大家介绍类与对象剩下的内容:static 关键字,构造方法和包的概念。