java基础(五)类和对象


前言

上篇文章总结了数组的知识点,而数组也可以说是一种对象,所以这篇承接上一篇文章来总结,对象和类的知识点。对象和类的知识也是java这个面向对象语言的重中之重,本篇文章参考了《java编程思想》,结合了自己的学习感悟和实践操作。同时笔记中也涉及了许多本篇相关的知识点,可供参考,文章链接



一、名词解释

多态

  • 按字面的意思就是“多种状态”,指同一个实体同时具有多种形式,在面向对象中,接口的多种不同实现方式即为多态。
  • 也可以称为是:编译时和运行时类型不一致的情况


继承

  • 汉语释义:继承是指一个对象直接使用另一对象的属性和方法
  • 编程语言中:继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等


封装

  • 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别
  • 在《java编程思想》一书中作者的举例:

将开发人员得角色分为类创建者和客户端程序员,客户端程序员收集各种用来实现快速开发的类,类创建者构建这些类,这种类对外只暴露接口部分,隐藏实现部分,这样可以在实现客户端程序员能够访问的同时,保证了类创建者可以任意修改被隐藏的部分,并且这些隐藏部分容易被其他人篡改破坏导致bug,所以隐藏起来也可以减少程序的bug。



抽象

  • 抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。
  • 所有编程语言都提供抽象机制
  • 问题的复杂性直接取决于抽象的类型和质量


  • 也可以说是类型,指包含由各特殊的事物或现象抽出来的共通点的抽象概念,也就是说抽象出来的就是类型
  • 因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以实际上一个类就是一个数据类型
  • 为解决“银行出纳员问题”中涉及许多对象,面向对象语言Simula-67中使用class关键字来引入新的类型,相似的对象会被分组到对象的类中
  • 类是一批对象的抽象
  • 自定义的类来表示数据类型,这时候这种类型的变量被称为引用变量


对象

  • 汉语释义:常有两层意思,指行动或思考时作为目标的事物或特指恋爱的对方等含义
  • 撇开恋爱方面不谈

在《java编程思想》中:将问题空间中的元素以及其在解空间中的表示称为对象

  • 简单说,我们将需要解决的问题本身的一些实体抽象为对象,比如电商网站,有商品、顾客、商家、订单等等对象


实例

  • 汉语解释:实例,指实际存在的例子
  • 在编程概念中实例和对象基本是同义词,每个对象都是某个类的一个实例,但并不能说所有的实例都是对象


方法

  • 汉语解释:一般是指为获得某种东西或达到某种目的而采取的手段与行为方式
  • 《java编程思想》中:

Booch对对象提出了一个简洁的描述:对象具有状态、行为和标识。也就是说对象可以拥有:内部数据(它们给出对象的状态)、方法(它们产生的行为)、都有唯一的地址(标识)

  • 也就是说方法就是对象产生的行为


二、java中的对象

根据《java编程思想》一书中的总结:

  • 万物皆为对象

字面意思,理论上讲任何待求解问题的概念化构件都可以表示成对象,比如:猫、狗、建筑物、服务等等

  • 程序是对象的集合,通过消息来互相请求

字面意思,程序就是由许多对象构成,对象和对象之间通过消息联络,若要调用某个对象的方法就发送消息,即发送调用请求

  • 每个对象都有自己的由其他对象所构成的存储

简单来说,就是可以创建包含现有对象的对象,新建的一个对象中可以包含现有对象,这样就可以构建复杂的程序体系,将复杂的体系隐藏在对象的简单性背后

  • 每个对象都拥有类型

不用怀疑,这里类型就是类的同义词,每个对象都是某个类的实例,每个类都区别于其他的类,都有自己的特征

  • 某一特定类型的所有对象都可以接收同样的消息

比如:动物类型的对象都会收到“吃”这一消息,狗类型的对象同时也是动物类型的,那么狗类型的对象也会收到“吃”的消息

简介描述:对象具有状态、行为和标识,意味着每个对象都拥有内部数据和方法,并有唯一的地址来区分



三、java中的类

实例

public class Dog {
   int age;//狗的年龄
   String color;//狗的颜色
   String breed;//狗的品种
    
    //吃的方法
    public void eat(){
        System.out.println("I can eat!");
    }
    //跑的方法
    public void run(){
        System.out.println("I can run!");
    }
    //叫的方法
    public void bark(){
        System.out.println("I can bark!");
    }
}

上述例子,就是类构建的模板,在名词解释种已经对类的基本概念有所了解了。

java中的类的特征和行为根据抽象的不同有着不同的属性和方法。当然其属性和方法也可以有多个。



类与对象的关系

虽然根据上述的基本概念不难得出类和对象之间的关系,但是再次还是总结一下,方便查看:

  • 类是创建对象的模板,描述一类对象的行为和状态
  • 类是对象的抽象
  • 对象是类的实例


四、构造方法

特点

  1. 每个类都有至少一个构造方法
  2. 若没有显示定义构造方法,编译器会为这个类提供一个默认的构造方法
  3. 创建对象一定会调用一个构造方法
  4. 构造方法必须和类同名
  5. 一个类可以有多个构造方法


示例

public class People {
    int age;
    String name;
    
    public People() {
        
    }

    public People(int age) {
        this.age = age;
    }
    
    public People(int age, String name) {
        this.age = age;
        this.name = name;
    }


}

无参的,一个参数的,多个参数的。



若是默认情况下

.class文件中的反编译内容

public class People {
    public People() {
    }

    public static void main(String[] args) {
  
   }
}

会发现编译器会加上一个默认的无参构造函数



五、创建对象

java通过new关键字来创建对象,也就是类的实例化

People people = new People();

步骤拆分:

  • new People()new关键字分配空间,并根据People类创建对象
  • 调用构造函数初始化
  • 然后将new People()创建出的对象的引用赋值给 people 这个变量

注意:这里对象的引用是new关键字的结果,不是构造方法的返回值

这里有个引用的概念,我们可以简单的理解引用就是存储的标志或者是地址,在内存空间中要寻找每个变量,寻找的方法就是通过每个内存的引用,类似C/C++中指针的概念



理解方法:

new People()是创建对象的语句,这里创建出来的对象在内存空间中有一个地址,这个地址就可以理解为引用,而这个对象虽然存在,但是我们要使用它却不好使用,我们需要一个变量来装这个引用,方便我们每次调用,所以将这个引用通过=赋值给前面同类型的变量。

类似每个对象都像是一个气球,而这些气球飘在天上我们够不着,所以我们通过给气球系上绳子,这样就可以够到这些气球了,绳子就是变量,系绳子就是将引用赋值给变量,那么气球就是带着这些引用的对象了。



参考书籍:

《java编程思想》

参考文章:

菜鸟教程



总结

本篇就算是告一段落,下一篇将接着本篇的类和对象的概念,来总结类中变量的类型中的知识点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

西风逐白马

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

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

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

打赏作者

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

抵扣说明:

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

余额充值