c02章.s02节.第一个类和对象

第一个类和对象

[toc]

一 面向对象的编程语言

1.1 Java面向对象的编程语言

​ 一个Java程序可以认为主要是一系列对象的集合,互相调用彼此的方法来协同工作,计算各对象的状态属性,完成指定的目标任务。

换个说法,Java程序用自己的方式定义描述了现实世界中的事物,并完成了现实世界中的各种行为目标。

举个例子,Java程序有成千上万个,每个程序做了不同的事情。有电商系统,有物流系统,库存系统,财务系统,有电子书城,有地图网站,外语学习网站,还有聊天软件等。这里面的系统也不都是由Java语言完成的。还有别的面向对象的语言。

​ 对Java语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。

1.2 对象的概念

Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点:

  • 对象具有属性和行为。
  • 对象具有变化的状态。
  • 对象具有唯一性。
  • 对象都是某个类的实例。
  • 一切皆为对象,真实世界中的所有事物都可以视为对象。

1.3 前端和后端的区别

​ 一般你能直接看到的软件界面,网站界面,都属于前端编程语言编写的。Java为前端的网站提供数据操作等。

1.4 面向对象的行为过程

​ 以电商系统举例,商品信息都是存储在数据库的(数据库就可以理解成仓库,数据都是存这里面的,方便管理,查询等)。程序将商品抽象出来定义成类,然后从数据库把数据查询出来,看成一个个商品对象,成千上万的商品,通过网络展示到用户前端。

​ 客户端提供各种功能,比如搜索,下单,购买数量,颜色等,然后前端程序再将用户的选择的行为通过网络传递到后端程序。

后端程序基于前端的数据,进行相应的操作,搜索,下单,最后存储到数据库。

​ 其它子系统,比如发货系统,和银行对接的支付系统,进行相应的操作。最终完成了用户的一系列购物行为。

​ 这里简单让你理解下Java Web中面向对象的概念。

二 入门开发的场景知识

​ 刚刚提到了前后端,我们前端的内容以后会学习,暂时只要知道数据都是从服务器端(后端)传到用户端(前端),原始数据都是从各种各样的数据库加载到服务器端的。

​ 入门篇都以建造一个电子图书馆为出发点,里面的最基本的类就是定义电子书,相对逻辑关系简单。比起电商网站,里面定义的商品以及业务太复杂,在后面的阶段再讲。

​ 电子图书馆可以看成是图书馆的系统,为了让大家有实际的感受,又结合了《微信读书》的书城功能,(一般的小说网站,免费阅读的网站都这样,图书阅读,图书推荐,榜单等功能)。目的就是为了让大家学完了就知道编程是怎么一回事了。而不是学完概念,还是不知道该如何编程。

我不想给微信读书做广告,没办法,总得找个例子吧,大家学的时候也有概念。希望这样的链接不会被文章平台封掉。之前有十几篇文章带二维码,封了几个月才给我提示,我一直纳闷,为啥一个阅读都没有。另外,微信读书有小程序和App的,我们以网站为主要示例。

​ 下面将介绍类,变量,方法,对象,实例变量的概念。场景虽然是基于一个更简单的系统电子图书馆。但是当你学会了,就会发现复杂的都是由简单的拼出来的。只是更讲究点技巧和技术。

三 类

之前的章节《打印Hello World》和《print打印详解》中的Hello.java以及 PrintlnExplain.java 都是最简单的类,它们都只包含了一个main函数,作为Java程序的启动入口。

类在定义的时候,可以包含很多概念。

3.1 类的概念

类:类是一个模板,它描述一类对象的行为和状态。

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

​ 也可以理解成类是定义描述现实世界中的对象的。类似于图纸,设计图,模具。所有的对象的创建,都是基于类的定义。类中定义了什么,对象就拥有什么,可以做什么。

3.2 编写第一个类

​ 以WeiXin读书网站的首页上图书为例,这些数据都是来自于后端,如何定义的呢?

点击该网站,打开首页,可以看到书都有名字,作者,你还能看到它的排名。如下图红色标记。其它知识我们后面再慢慢学。

01Book.png

我们在前面《打印HelloWorld》已经学会如何新建一个类了。我们新建一个名为Book的类,并定义如下属性。尽量用英语,用翻译工具翻译一下。不然开发工具提示拼写错误,十分别扭。对于其他人阅读也方便。

public class Book{
    String name; //书名,类型为字符串String,默认值为null
    String author; //作者,类型为字符串String,默认值为null
    int rank; //排名,类型为整型int,默认值为0
}

定义了一个简单的类Book,和Book的几个属性。类的定义请继续往下看。

3.3 类的定义

在 Java 中定义一个普通的类,需要使用 class 关键字、一个自定义的类名和一对表示程序体的大括号,以及属性和方法。完整语法如下:

public class 类名{
    变量类型_1 变量名字_1;//分号隔开
    变量类型_2 变量名字_2;//分号隔开
      ...
    
    //定义方法部分
    function1(){
        //方法代码
    }
    function2(){
        //方法代码
    }
    ...
}

public:是定义该类是否可以被其它类和程序访问。平时简单开发用public就可以了。表明是公共的。关于类的访问权限后面学习。

class :声明类的关键字。

变量类型:表示成员变量的类型。常见的比如,String是字符串,int是整数,double是小数,还可以将对象作为变量。

function():表示成员方法名称。就是用来描述对象的行为,动作的。

其中的属性和方法按照需要编写,都不是必须的。

四 对象

4.1 对象的概念

所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。对象有以下特点:

  • 对象具有属性和行为。
  • 对象具有变化的状态。
  • 对象具有唯一性。
  • 对象都是某个类的实例。
  • 一切皆为对象,真实世界中的所有事物都可以视为对象。

4.2 对象是类的实例化

对象是类的实例化,实例化一个对象,简单的方式如下:

new 类名(); // 简单的实例化方式
类名 对象名 = new 类名(); //将一个实例化的类起个名字赋值给它。作为变量使用。称为引用。

4.3 创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。

  • 实例化:使用关键字 new 来创建一个对象。

  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

    构造方法后面会讲,我们先用默认的构造方法。默认构造方法是不需要编写的。

4.4 实例化一本书

以下代码,Book是我们刚刚定义的类,用关键字new创建,同时给这个对象起个名字,用等于号赋值。

注意观察空格,至少空一个,大于一个也没问题。为了美观要注意统一规范。后面会讲代码编写规范。

public static void main(String[] args){
    new Book();//如果不将实例化的对象赋值,它就是孤魂野鬼,找不到归属。其它代码想用它也没办法。因为不知道它叫啥。所以要起个名字,能够引用到它。
    Book book = new Book();//实例化了一本书,赋值给book
    Book book2 = new Book();//实例化了一本书,赋值给book2
    Book book3 = new Book();//实例化了一本书,赋值给book3
    
    System.out.println("----------------以下内容查看实例化后对象的数据----------------");
    System.out.println("book 对象,书名:"+book.name+",作者:"+book.author+",排名:"+book.rank);
    System.out.println("book2对象,书名:"+book2.name+",作者:"+book2.author+",排名:"+book2.rank);
    System.out.println("book3对象,书名:"+book3.name+",作者:"+book3.author+",排名:"+book3.rank);
}

运行该程序,查看打印内容,发现是null和零。对于字符串,默认值都是null,表示没有。对于int整型,默认值为0

4.5 给对象赋值

= 等于号是简单的赋值运算符,将右操作数的值赋给左侧操作数。比如: A = B; 或者 A = B + C;

正如上面打印的内容都是默认的初始值,这些内容自然和我们浏览器看到的不一样。我们是如何赋值的呢。

在同级包下,新建ObjInit类,这名字随意。并对Book对象初始化。


public class OBjInit {
//该类没有属性,只有main方法。
    public static void main(String[] args) {
        //我们之前讲过Book类是public的。所以在ObjectInit这个类中也是可以使用这个类的。
        Book book = new Book();
        Book book2 = new Book();
        Book book3 = new Book();

        System.out.println("----------------以下内容为对象赋值=----------------");
        System.out.println("给book 对象赋值,书名,作者,排名");
        book.name = "围城";
        book.author = "钱钟书";
        book.rank = 3;

        System.out.println("给book2 对象赋值,书名,作者,排名");
        book2.name = "白鹿原";
        book2.author = "陈忠实";
        book2.rank = 4;

        System.out.println("给book3 对象赋值,书名,作者,排名");
        book3.name = "红楼梦";
        book3.author = "曹雪芹";
        book3.rank = 5;

        System.out.println("----------------以下内容查看实例化后对象的数据----------------");
        System.out.println("book 对象,书名:"+book.name+",作者:"+book.author+",排名:"+book.rank);
        System.out.println("book2对象,书名:"+book2.name+",作者:"+book2.author+",排名:"+book2.rank);
        System.out.println("book3对象,书名:"+book3.name+",作者:"+book3.author+",排名:"+book3.rank);
    }
}

这里,给对象赋值,所有的值,都来自于业务需要,如果是简单的值,固定的值,比如说,省份,国家,可以直接写死。在本篇Book类中,书籍的内容肯定是来自于数据库的。数据库中存储了很多书的信息,以及书的内容。

在读取数据库,获取到需要的相关数据,进行赋值完成后,通过服务器,网络返回到浏览器端,展示给用户。后面的操作会继续学习。

文章和项目开源地址

一起学习,Java最简单易懂的零基础入门,答疑解惑,关注点赞github开源:https://github.com/BradYan/easy-java

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容