趣味故事掌握类和对象,有关鞋厂的知识!

作者阿里云代理 文章分类 分类:linux图文教程 阅读次数 已被围观 660


什么是类(class)和目标(object)?

咱们这次主人公仍是王总。不过因为房市业务遇冷觉得,他转型改行开了一个大型鞋厂,潮鞋品牌,预备上下游一条龙整齐全了。


虽然新冠之前,王总每天能出产100万双鞋子,卖的也很火。不过新冠后,订单量少了很多。


所以他就请来了专业的商业咨询机构。走进厂里一看,你这儿的几十款鞋子都是老旧样式得规划多一些新款啦。


小白奶奶听了又是着急又一头雾水,见我没想要停下来解说概念。


直接打断解说,“雷学委,请问扯半天这关类什么事啊?”


我扶了扶眼镜,话都讲不到三句呢!这不正讲到了重点了。(没错,雷学委戴眼镜的,其他都是假冒!)


‘类’便是商业参谋说的新样式。多个新样式便是多个不同的‘类’。像造鞋厂得根据不同类型制作模具,然后从模具来批量出产鞋子。

类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。


小白奶奶说哦,那新鞋子是不是一个新的类啊?


雷学委摇摇头,这不是类了,新鞋子从样式的模型中做好了,现已不是类了,而是目标!


小白奶奶又说了,但是尺度编号不一样啊,你刚刚不是说不同款型就说类吗?这不就对立了。


我摇摇头,那仍是同一样式的鞋。


你看到鞋子是目标,目标他有自己的鞋码,色彩等,但是有一个仅有的编号。

目标是具有类类型的变量,类的一个详细实例。


售货员也是按这个编号来管理的,每出售一双鞋子就把这个编号标记为已出售!


奶奶说,如同理解了一点。是不是鞋子模具或者规划图就等同于类呢,详细买到的鞋子便是目标?


奶奶自己在那嘀咕了一会,嗯,没错。


那你能够说告诉我它们的差异不? 我现在感觉类和目标一个说的是鞋款概念和一个说的是一双什物鞋子。(学委觉得老奶奶领会才能不比年轻人差啊)


类和目标的差异

类具有普遍性代指一个相似的群体;目标具有特殊性,是仅有个别

类是什么对普遍事物的一般化。比方一些产品的模具便是类。它是对一整类事物的归纳描述

目标是类实例化的,一个类的某个实例,比方根据某个型号模具而制作出来的鞋子,它只能是一个详细的个别。


下面展现代码了:

雷学委创立了一个 Shoe类,这个类下面分了几个大牌子叫做XAnta,X361Du,以及XLeixw (呵呵,雷学委自创品牌)等。

这几个大牌子下面还有各个样式细分。


image.png

咱们看到的XAnta鞋子这个概念便是一个大类,再如XAnta春季款鞋子便是这个大类下的一个分支类。


顾客最后拿到手的,会是一对XAnta春季款39码,银灰色潮流时髦款,如上图序列号(SN1639705018),便是一个目标。


奶奶此时很快乐:”原来就这么简略,还挺详细的!“


好,咱们看看下面看看类的代码实现:


package org.levintech.javademo.leixuewei.classobject;  /**  * @author levin  * Created on 2021/6/20  * [雷学委] CSDN/Juejin Code Demo  */ public class Shoe {  private int size;  private String color;   public Shoe(int size, String color) {  this.size = size;  this.color = color;  }  public int getSize() {  return size;  }  public String getColor() {  return color;  }  @Override  public String toString() {  return "Shoe{" +  "size='" + size + '\'' +  ", color='" + color + '\'' +  ", serialNo='" + hashCode() + '\'' +  '}';  } }  /**  * XAnta  */ class XAntaShoe extends Shoe {  private String brand = "XAnta";   public XAntaShoe(int size, String color) {  super(size, color);  }  @Override  public String toString() {  return "XAntaShoe{" +  "size='" + getSize() + '\'' +  ", color='" + getColor() + '\'' +  ", serialNo='" + hashCode() + '\'' +  ", brand='" + brand + '\'' +  '}';  } }  /**  * X361Du  */ class X361DuShoe extends Shoe {  private String brand = "X361Du";   public X361DuShoe(int size, String color) {  super(size, color);  }  @Override  public String toString() {  return "X361DuShoe{" +  "size='" + getSize() + '\'' +  ", color='" + getColor() + '\'' +  ", serialNo='" + hashCode() + '\'' +  ", brand='" + brand + '\'' +  '}';  } }  /**  * XLeixw  */ class XLeixw extends Shoe {  private String brand = "XLeixw";   public XLeixw(int size, String color) {  super(size, color);  }  @Override  public String toString() {  return "XLeixw{" +  "size='" + getSize() + '\'' +  ", color='" + getColor() + '\'' +  ", serialNo='" + hashCode() + '\'' +  ", brand='" + brand + '\'' +  '}';  } }  

上面界说了4个类,一个大的鞋(Shoe)类,有尺度(size),色彩(color)这两个特征)。然后XAntaShoe这个类,具有自己的品牌(brand),其他两个类也是如此。

然后每一个类都覆盖了toString办法,把鞋子的信息打印出来了,像XAntaShoe/X361Du/XLeixw 等鞋类还打印了品牌信息。


运行示例程序的代码如下。:


public class LeiXueWeiRunner {  public static void main(String[] args) {  System.out.println("【雷学委代码Demo】");  Shoe anta01 = new XAntaShoe(40, "black");  println(anta01);  Shoe x36101 = new X361DuShoe(40, "blue");  println(x36101);  System.out.println(anta01 == x36101);  //打印每双鞋的hashcode  System.out.println(anta01.hashCode());  System.out.println(x36101.hashCode());  //创立两双同码同色的鞋子,咱们能够留意到两双尺码色彩同款鞋,序列号不一样!  println(new XAntaShoe(40, "black"));  println(new XAntaShoe(40, "black"));  //创立anta04 跟 anta04 色彩样式尺度一样,看看是否相同目标  Shoe anta04 = new XAntaShoe(40, "black");  System.out.println("anta01 与 anta04是否相同?" + (anta01 == anta04));//这个判断是比较引证的  System.out.println("anta01 与 anta04是否相同?" + (anta01.equals(anta04)));//这个才是真实判断目标是否相同的  }   public static void println(Shoe shoe) {  System.out.println("鞋:" + shoe);  } } 

运行效果图如下:

image.png

这儿打印的便是特定的目标。咱们看到,每个鞋都有一个序列编号(serialNo),并且是仅有的。


类是没有状态的,目标是有状态的,有详细的值!

只要创立新目标,不论是同样式的同个鞋码色彩,这个序列号都会改变。


并且,咱们判断anta01跟anta04是否相同的目标(同一双鞋)。答案是:也便是不论一个类实例特点值都相同了,但体系以为它们仍不是同一个目标!


类是持续存在的,而目标只存在于内存之中,跟着程序履行完毕而销毁了!

上面的实例代码运行完毕后,咱们是无法再找回这个目标的。


image.png

但是类仍然存在当前体系的磁盘上, 如上图.class文件(类的字节码文件)。


总结

本文解说了类和目标


类普遍代指意义

目标的特殊性,目标是一个仅有的个别

类和目标的差异

上面的说的大型鞋厂就像一个JVM(Java虚拟机)一样,时间不断的从模具(.class文件)中制作鞋子(创立目标object),然后卖出鞋子。


言语(Java)仅仅用来表达的,中心原理其他言语都适用,刷几百万都买不来这么值的!


先提到这儿,以后都会再谈,关注长时间阅读 =>雷学委兴趣编程故事汇编


彩蛋:实际应用中,有些场景咱们会以为特点都相等的目标相等,雷学委现已在XLeixw类重写了相关办法,读者能够自行下载文末代码,试着创立两个款XLeixw同个色彩尺度的鞋子判断是否相同。

本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: