Java类和对象

对象

例如:

1)狗是一个对象,它有颜色、名字、品种等属性,还有摇尾巴、吃饭、汪汪叫等行为

2)学生是一个对象,TA有学号、姓名、所在班级等属性,还有学习、提问、走路、吃饭等行为

狗、学生只是抽象的描述,这个抽象的描述称为 “”,类是一个模板,它描述一类对象的属性和行为

狗狗小白、狗狗小花 or 张三同学、李四同学等,这些具体的个体称为“对象”,对象是类的实例

 

Java 是面向对象的编程语言,对象就是面向对象程序设计的核心

(所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念)

对象有以下特点:

  • 对象具有属性和行为
  • 对象具有变化的状态
  • 对象具有唯一性
  • 对象都是某个类的实例

 

面向对象

从字面上分析就是人朝着对象,也就是人关注着对象。对于计算机而言,它形象的表达出人类更关注一个具体事物的详细信息

 

例如:【 购买手机 】

售货员:您想买个什么样的手机?

买家:我想买一个可以玩游戏(行为)、内存大一点的大屏幕手机(属性)

—— 此时可将【可以玩游戏、内存大一点的大屏手机】这个信息称为

售货员了解买家需求后,拿出一部屏幕6.1英寸,内存256G,可以玩游戏的iPhone13 

—— 此时可将iPhone13手机称为对象

如果买家对iPhone13这个手机对象不满意,还可以要求售货员换一个手机对象。如:小米12、华为P50等其它符合要求的手机对象

此时可将这整个购买手机的过程称为面向对象

 

例如:

每个人都有身高、体重、年龄、血型等属性,有劳动、直立行走、思考问题、使用工具等行为。每个人都具有“人类”这个类别的属性与行为

熊猫不具备“人类”这个类别的属性与行为,它不会直立行走、使用工具等,所以熊猫不属于“人类”

“人类”仅是一个抽象的概念,是不存在的实体

但具备“人类”这个类别属性与行为的人是实际存在的实体,每个人都是“人类”这个类别的对象

也就是说:类是概念模型,它定义对象的所有属性和行为。即类是描述了一组有相同属性和相同行为(方法)的一组对象的集合,对象是一组变量和相关方法的集合

对象的状态和属性称为变量,对象的行为称为类的方法。比如:“人”这个对象都具有的行为是“吃饭”,因此吃饭就是“人类”类别的一个方法

对象
人类 教室里的学生妞妞
  正在讲课的老师Alice
汽车 一辆黄色的宝马跑车
  一辆白色的林肯轿车
动物 一只叫“小白”的雪纳瑞
  一只叫“喵喵”的波斯猫

 

所有的Java程序都基于类,类是Java中一种重要的引用数据类型,也是组成Java程序的基本要素

例如:

// 定义一个简单的Dog类
public class Dog {
    String colour;
    int size;
    int age;
// 吃饭的方法 void eat() { } // 跑的方法 void run() { } // 睡觉的方法 void sleep() { } } 

 

// 定义一个简单的Telephone类
public class Telephone {
    float screen;
    double ram;

    void call() {
        System.out.println("Telephone可以打电话");
    }
    void surfing() {
        System.out.println("Telephone可以上网");
    }
}

 

Java 类名的命名规则:

  • 类名应该以下划线(_)或字母开头,最好以字母开头
  • 第一个字母大写,如果类名由多个单词组成,则每个单词的首字母最好都大写
  • 类名不能为Java中的关键字。如:boolean、this、int等
  • 类名不能包含除了下划线(_)和美元符号($)字符以外的特殊字符

 

创建对象

语法:类名 对象名 = new 类名();

在Java中,使用关键字 new 来创建一个新的对象,并调用构造方法初始化对象

例如

Telephone phone = new Telephone();

new Telphone() 就相当于对一个类进行了实例化,只不过把这个对象赋给了对象名这个变量。对对象名进行操作,就等于对这个对象进行操作

 

使用对象

  • 引用对象的属性:对象名.属性;
  • 引用对象的方法:对象名.方法名();

例如:

package common;

public class Telephone {
    float screen;
    double ram;
void call() { System.out.println("Telephone可以打电话"); } void surfing() { System.out.println("Telephone可以上网"); } public static void main(String[] args) { Telephone phone = new Telephone(); // 给screen属性赋值 phone.screen = 6.2f; // 调用call()方法 phone.call(); } }

 

构造方法

语法:

 

构造方法是定义在Java类中的一个用来初始化对象的特殊方法

也就是说,在创建一个对象的时候,必须要调用构造方法(在创建对象 [new 运算符] 之后自动调用)

Java中的每个类都有一个默认的构造方法,每个类可以具有多个构造方法,但要求它们各自包含不同的方法参数

构造方法有以下特点:

  • 方法名必须与类名相同
  • 可以有 0 个、1 个或多个参数
  • 没有任何返回值,包括 void
  • 默认返回类型就是对象类型本身
  • 只能与 new 运算符结合使用

例如:

public class Telephone {
    // 这个构造方法有一个参数:screen
    public Telephone(double screen) {
        System.out.println("手机屏幕尺寸是" + screen + "英寸");
    }

    public static void main(String[] args) {
        Telephone myTelephone = new Telephone(6.2);
    }
}

 

要在不同的条件下使用不同的初始化行为创建类的对象,这时候就需要在一个类中创建多个构造方法

例如:

1)先在 Worker 类中定义两个构造方法

public class Worker {

    public String name;
    private int age;

    // 定义带有一个参数的构造方法
    public Worker(String name) {
        this.name = name;
    }

    // 定义带有两个参数的构造方法
    public Worker(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return "我叫" + name + ",今年" + age + "岁";
    }
}

Tips:

Object 类具有一个 toString() 方法,该方法是个特殊的方法,创建的每个类都会继承该方法,它返回一个 String 类型的字符串

如果一定类中定义了该方法,则在调用该类对象时,会自动调用调用该类对象的 toString() 方法返回一个字符串。使用 System.out.prinln(对象名) 就可以将返回的字符串内容打印出来

 

2)在 TestWorker 类中创建 main() 方法作为程序入口,在 main() 方法中调用不同的构造方法实例化 Worker 对象,并对该对象中的属性进行初始化

import common.Worker;

public class TestWorker {
    public static void main(String[] args) {
        // 调用带有一个参数的构造方法
        Worker worker1 = new Worker("张三");
        System.out.println(worker1);

        // 调用带有两个参数的构造方法
        Worker worker2 = new Worker("李四",37);
        System.out.println(worker2);
    }
}

该示例定义了两个构造方法,分别是无参构造方法和有参构造方法

在一个类中定义多个具有不同参数的同名方法,这就是方法的重载

运行结果:

Worker1 对象并未指定 age 属性值,因此程序会将其值采用默认值 0

 

posted @ 2020-03-20 11:18  梦清欢  阅读(241)  评论(0编辑  收藏  举报