Java对象和类

    |     2015年3月30日   |   Java面向对象   |     0 条评论   |    1618

Java 是面向对象语言,围绕类和对象组织代码。常见概念还有实例、方法、属性、消息、封装、继承、多态、抽象。本节只把对象和类讲清楚。

对象是类的一个实例,有状态和行为。一条狗是对象:状态可以是颜色、名字、品种,行为可以是摇尾巴、叫、吃。类则是模板,描述这一类对象共有的行为和状态。

一、现实对象和软件对象

身边到处是对象:车、狗、人。它们都有状态和行为。软件对象很像:状态用属性(成员变量)保存,行为用方法体现。方法负责改内部状态,对象之间也通过方法互相调用。

二、类:创建对象的模板

一个简单的 Dog 类:

public class Dog {
    String breed;
    int age;
    String color;

    void barking() {
    }

    void hungry() {
    }

    void sleeping() {
    }
}

类里可以出现三类变量:

种类 定义位置 生命周期
局部变量 方法、构造方法或语句块内 方法结束就销毁,使用前必须赋值
成员变量(实例变量) 类中、方法外,无 static 随对象创建而分配,方法/构造方法可访问
类变量 类中、方法外,带 static 属于类本身,所有实例共享

上面的 barking()、hungry()、sleeping() 都是 Dog 的方法。一个类可以有多个方法。

三、构造方法

每个类都有构造方法。你不写,编译器会给一个默认无参构造。创建对象时至少会调用一个构造方法。名字必须和类名相同,可以重载多个版本:

public class Puppy {
    public Puppy() {
    }

    public Puppy(String name) {
        // 这个构造器仅有一个参数:name
    }
}

四、用 new 创建对象

三步:声明类型和名字 → 用 new 实例化 → 调用构造方法初始化。

public class Puppy {
    public Puppy(String name) {
        System.out.println("Passed Name is :" + name);
    }
    public static void main(String[] args) {
        Puppy myPuppy = new Puppy("tommy");
    }
}
// 输出:Passed Name is :tommy

访问成员的写法:

/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问其中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

完整例子:构造时打印名字,再用 setter / getter 操作年龄,也可以直接读字段。

public class Puppy {
    int puppyAge;
    public Puppy(String name) {
        System.out.println("Passed Name is :" + name);
    }
    public void setAge(int age) {
        puppyAge = age;
    }
    public int getAge() {
        System.out.println("Puppy's age is :" + puppyAge);
        return puppyAge;
    }
    public static void main(String[] args) {
        Puppy myPuppy = new Puppy("tommy");
        myPuppy.setAge(2);
        myPuppy.getAge();
        System.out.println("Variable Value :" + myPuppy.puppyAge);
    }
}
// Passed Name is :tommy
// Puppy's age is :2
// Variable Value :2

一句话总结:类是模板,对象是实例;new 会调用构造方法,状态放字段、行为放方法。

转载请注明来源:Java对象和类
本文链接地址:https://ai.zhousir.top/?p=71
回复 取消