4.2-全栈Java笔记:对象和类的概念及定义

对象和类的概念

我们人认识世界,其实就是面向对象的。大家眼里都是一个个对象,要不怎么老说搞对象搞对象啊。比如现在让大家认识一下“天使”这个新事物,天使大家没见过吧,怎么样认识呢?最好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了。

但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使?天使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程。


小时候,我们学自然数时怎么定义的?像1,2,3,4…这样的数就叫做自然数。 通过抽象,我们发现天使有这样一下特征:

1.  带翅膀(带翅膀不一定是天使,还可能是鸟人)

2.  女孩(天使掉下来脸着地,也是天使!)

3.  善良

4.  头上有光环

那么通过这4个具体的天使,我们进行抽象,抽象出了天使的特征,我们也可以归纳一个天使类。 通过这个过程,类就是对象的抽象。

类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造?类就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。

 

类:我们叫做class。 

对象:我们叫做Object,instance(实例)。

以后我们说某个类的对象,某个类的实例。是一样的意思。

总结

1)对象:是具体的事物

2)类:是对对象的抽象;类可以看做创建对象的模板

3)类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

4)类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的属性、方法。

类和对象初步

第一个类的定义

【示例1】类的定义方式

public class   Car{   //每一个源文件必须有且只有一个public   class,并且类名和文件名保持一致!

}

class   Tyre {   //一个java文件可以同时定义多个class

}

class   Engine {

}

class Seat   {

}

上面的类定义好后,没有任何的其他信息,就跟我们拿到一张张图纸,但是纸上没有任何信息,这是一个空类,没有任何实际意义。所以,我们需要定义类的具体信息。对于一个类来说,一般有三种常见的成员:属性field、方法method、构造器constructor。这三种成员都可以定义零个或多个。

【示例2】简单的学生类编写

public class   SxtStu {

    //属性(成员变量)

    int id;

    String sname;

    int age;

    //方法

    void   study(){

       System.out.println("我正在学习!");

    }

    //构造方法

    SxtStu(){

    }

}

 属性(field,或者叫成员变量)

属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。  


表1 成员变量的默认值

数据类型

默认值

数值型

0    ,0.0

字符型

'\u0000'

布尔型

false

所有引用类型

null

属性定义格式:

[修饰符]  属性类型  属性名 = [默认值] ;

 方法

方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。


方法定义格式:

[修饰符]  方法返回值类型    方法名(形参列表) {

  //   n条语句

}

 一个典型类的定义和UML图

public class   SxtStu {

    // field

    int id;

    String sname;

    int age;

    Computer comp;

    void   study() {

       System.out.println("我正在学习!使用我们的电脑,"+comp.brand);

    }

    SxtStu() {

    }

    public static void   main(String[] args) {

       SxtStu stu1 = new   SxtStu();

       stu1.sname = "张三";

        Computer comp1 = new   Computer();

        comp1.brand = "联想";

        stu1.comp =   comp1;

       stu1.study();

    }

}

class   Computer {

    String brand; //品牌

}

执行结果:

对应的UML图如下:




「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。


笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,019评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,072评论 19 139
  • 未公开的传说是我们从其他人那里听到的故事,通常称为流言蜚语或小道消息。这些传说最大的问题就是很难证实。在许多...
    邓洁儿阅读 1,409评论 0 1
  • 一 市警察跟墨镜罪犯厉槐周旋有段时间了。 自网上流传一段虐杀短视频以来,厉槐就正式跟警方杠上了! 视频内容: 阴暗...
    娱情饭桶说阅读 4,318评论 1 21
  • 一般而言,重度用户是开发者最喜欢的人群。因为他们会给开发者带来绝大多数收入。 那么,你有没有想过为现实世界里的重度...
    元茜姑娘阅读 5,745评论 5 27

友情链接更多精彩内容