【JavaOOP】2、equals()方法与toString()方法、访问修饰符、包

3. equals()方法与toString()方法

3.1 toString()方法

作用:就是为了简化对对象的属性的打印输出。

/**
 * 重写toString():简化对对象的打印输出
 */
@Override
public String toString() {
    // 一般我们在成员方法中使用成员变量时,都会带this关键字。
    return "汽车品牌:" + this.brand + ",汽车颜色:" + this.color + ",价格为:" + this.price + ",轮子数:" + this.wheels;
}
@Test
public void test02(){
    Car car = new Car("奔驰", "黑色", 4, 600000);
    car.start();
    car.run();
    car.stop();
    // 调用重写的toString()方法
    System.out.println(car);
}

3.2 equals()方法

作用:就是定义我们自己对对象的比较规则。此时,需要重写的是父类Object的equals()方法。

/**
 * 重写equals():定义比较对象的内容是否相等。
 * 定义比较对象的规则。
 */
@Override
public boolean equals(Object obj) {
    Car car2 = (Car) obj;
    return this.brand.equals(car2.brand) &&
        this.color.equals(car2.color) &&
        this.price == car2.price &&
        this.wheels == car2.wheels;
}
@Test
public void test03(){
    Car car1 = new Car("奔驰", "黑色", 4, 600000);
    Car car2 = new Car("奔驰", "黑色", 4, 600000);
    // boolean b = car1 == car2; // 不能使用==,两个==比较的是内存地址
    /**
     * 因为没有重写父类Object类的equals方法,所以仍然使用Object中的equals方法,即:
     * public boolean equals(Object obj){
     * 		return (this == obj);
     * }
     */
    boolean b = car1.equals(car2);
    System.out.println(b);
}

4. 访问修饰符

Java中的访问修饰符共有四种:
private、protected、default、public

4.1 private

​ 私有的访问修饰符,代表只能在当前类的内部可以访问,简称为:类内有效

4.2 protected

​ 受保护的,代表只能在父子类的继承关系中存在,子类可以访问父类定义的由protected修饰的字段或熟悉或方法。它不受包的限制,也就是说,子类与父类即使不在同一个包中,只要你父类实用类protected,子类都可以访问它们,其访问权限比包的访问权限更高,所以,可简称为:父子类有效 + 同一个包下非父子类有效

4.3 default

​ 默认访问修饰符,实际上是什么都不写。这种访问修饰权限代表只要在包的内部都可以互相访问,简称为:包内有效

4.4 public

​ 公有的访问修饰符,可以在任何地方访问,具有最高的访问修饰权限。简称为:任何位置有效

访问修饰权限由高到低排列如下:
public > protected > default > private

画图表示如下:

修饰符当前类同一包类父子类(同一个包)其他包(父子类)使用范围
public类、接口、变量、方法
protected变量、方法、不能修饰外部类
default×类、接口、变量、方法
private×××变量、方法、不能修饰外部类

5. 包

包的作用: 实际上包起的作用就是为了区分同名类。相当于Windows系统中的文件夹。

5.1 包的定义

一般地,Java中包名使用的是所在公司域名的反向写法,一般都是小写。如:com.baidu.crm.login

格式为:公司所在域名的方向形式 + 项目名 + 模块名
定义: 放在除注释外的第一行,由package定义。package com.hzit.book.xxx
命名:
1、反向公司域名:com.hzit
2、项目名:book
3、模块名:base
4、功能命:pojo/dao/service/controller
最终完整的包名:
com.hzit.book.base
​ .pojo
​ .dao
​ .service
​ .controller

5.2 包的引入

1、在Java中定义包使用package关键字。并且要注意的是,package只能放在除注释外的第一行。
2、如果需要引入一个包的类,使用语法为:import 包名+类名。如:import java.util.Scanner
3、使用import可以一次引入某个包中的一个类,也可以一次引入多个类,使用*,如:import java.util.*,代表一次可以引入指定的java.util包中的所有正在使用的类。
如果使用了*号,代表对指定包中的所有正在使用的类进行引入,而这个行为,不会增加当前正在编译的文件的大小,也不会影响程序运行效率,只会增加编译的时间。

5.3 访问不在同一个包中的同名类

img

package com.hzit.test;

import com.hzit.entity.Person;

public class TestPerson {
    
    @Test
    public void test05(){
        // 通过import导入了com.hzit.entity下的Person类,可以简化
        Person person = new Person();
        // 访问其他包中的同名类,必须要写类的完全限定名(包含包名)
        com.hzit.book.entity.Person person1 = new com.hzit.book.entity.Person();
    }
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生146

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值