java属性 方法 对象之间的关系 类之间的关系 以及构造方法、set、get方法 toString方法是什么

 java属性 方法 对象之间的关系 类之间的关系

  1. 属性(Field/Attribute)

    • 属性是类的一部分,用于描述类的状态。
    • 属性是变量,可以是基本数据类型或引用类型。
    • 在Java中,属性通常定义在类的主体内部,作为类的成员变量。
  2. 方法(Method/Function)

    • 方法是类的一部分,用于描述类的行为。
    • 方法是一组执行特定任务的语句集合。
    • 方法可以有参数和返回值。
    • 在Java中,方法定义在类的主体内部。
  3. 对象(Object)

    • 对象是类的实例。
    • 每个对象都有自己的属性和状态,这些状态由对象的属性值决定。
    • 对象通过调用其类的方法来执行操作。
    • 在Java中,使用new关键字和类的构造函数来创建对象。
  4. 类(Class)

    • 类是对象的模板或蓝图,它定义了对象的属性和方法。
    • 类描述了具有相同属性和方法的一组对象。
    • 类是静态的,而对象是动态的。

生活中的例子:汽车

1. 类(Class):汽车

想象一下,汽车是一个类。它描述了一类具有共同特征的物体:轮子、引擎、方向盘、座椅等。这些特征对应到Java中就是类的属性。相当汽车的制作图。

2. 属性(Field/Attribute):汽车的特性
  • 颜色:描述汽车的外观。
  • 品牌:标识汽车的制造商。
  • 速度:表示汽车当前的行驶速度。

在Java中,这些属性会被定义为类的成员变量。

3. 方法(Method/Function):汽车的行为
  • 启动:启动汽车的引擎。
  • 加速:增加汽车的行驶速度。
  • 刹车:减速并停止汽车。

在Java中,这些方法会被定义为类的方法,用来操作类的属性或执行某种功能。

4. 对象(Object):具体的汽车实例

每辆具体的汽车都是汽车类的一个对象。比如,你有一辆红色的本田汽车,这就是一个具体的对象。它有自己的颜色(红色)、品牌(本田)和状态(例如,当前速度)。你可以启动它、加速它或刹车它,这些都是调用对象的方法。就是汽车本身

// 汽车类  
class Car {  
    // 属性  
    String color; // 颜色  
    String brand; // 品牌  
    int speed; // 速度  
  
    // 构造方法  
    public Car(String color, String brand) {  
        this.color = color;  
        this.brand = brand;  
        this.speed = 0; // 初始速度为0  
    }  
  
    // 方法  
    public void start() {  
        System.out.println("汽车启动,引擎轰鸣...");  
    }  
  
    public void accelerate(int increment) {  
        if (increment > 0) {  
            speed += increment;  
            System.out.println("汽车加速,当前速度:" + speed + " km/h");  
        } else {  
            System.out.println("加速值必须为正数!");  
        }  
    }  
  
    public void brake() {  
        if (speed > 0) {  
            speed -= 10; // 假设每次刹车减速10 km/h  
            if (speed < 0) {  
                speed = 0; // 速度不能为负数,设为0  
            }  
            System.out.println("汽车刹车,当前速度:" + speed + " km/h");  
        } else {  
            System.out.println("汽车已经停止,无需刹车。");  
        }  
    }  
  
    // 获取速度的方法  
    public int getSpeed() {  
        return speed;  
    }  
  
    // toString方法,用于打印汽车信息  
    @Override  
    public String toString() {  
        return "汽车信息:" +  
               "颜色=" + color +  
               ", 品牌=" + brand +  
               ", 速度=" + speed + " km/h";  
    }  
}  
  
// 主类  
public class Main {  
    public static void main(String[] args) {  
        // 创建汽车对象  
        Car myCar = new Car("红色", "本田");  
          
        // 调用汽车对象的方法  
        myCar.start(); // 启动汽车  
        myCar.accelerate(20); // 加速到20 km/h  
        System.out.println(myCar); // 打印汽车信息  
        myCar.brake(); // 刹车减速  
        System.out.println(myCar); // 再次打印汽车信息,查看速度变化  
    }  
}

构造方法 

在实例化对象时

// 创建汽车对象  
        Car myCar = new Car("红色", "本田");  

我们将参数  "红色","本田" 传给 构造方法 ,实例化对象。

构造方法是用于创建对象并初始化其状态的特殊方法。当你使用new关键字创建一个对象时,构造方法会被自动调用。构造方法通常与类名相同,没有返回类型(甚至不是void),并且可以有参数,也可以没有参数。

    // 构造方法  
    public Car(String color, String brand) {  
        this.color = color;  
        this.brand = brand;  
        this.speed = 0; // 初始速度为0  
    }  

set方法、get方法

setget方法通常用于访问类的私有字段(成员变量)。

set方法用于设置字段的值,而get方法用于获取字段的值。这样做的好处是封装了类的内部状态,并提供了对状态进行操作的明确接口。

public class Person {  
    private String name;  
    private int age;  
  
    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return this.name;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public int getAge() {  
        return this.age;  
    }  
}

 在这个扩展的Person类中,setNamegetName方法用于访问name字段,而setAgegetAge方法用于访问age字段。

toString方法

Person 类重写了 Object 类中的 toString() 方法,以便在打印 person 对象时返回一个包含 name 和 age 属性的字符串。

当我们执行 System.out.println(person); 时,person 对象的 toString() 方法被调用,并打印出 Person{name='Alice', age=30} 这样的字符串。

如果我们不重写toString方法打印输出类时,会输出 com.it.Person@5143c662,这实际上是Java对象的默认 toString() 方法输出com.it.Person 是类的全限定名而 @5143c662 是对象的哈希码的无符号十六进制表示

Person.java

public class Person {  
    private String name;  
    private int age;  
  
    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
  
    // Getter 和 Setter 方法  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    // 重写 toString() 方法  
    @Override  
    public String toString() {  
        return "Person{" +  
                "name='" + name + '\'' +  
                ", age=" + age +  
                '}';  
    }  
}

Main.java 

public class Main {  
    public static void main(String[] args) {  
        Person person = new Person("Alice", 30);  
        System.out.println(person); 
// 输出:Person{name='Alice', age=30} 
//如果不重写toString方法 会输出 类的全限定名+ 对象的哈希码的无符号十六进制
    }  
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值