08 面向对象 01-- 类、对象、包 v1.0

本贴最后更新于 2689 天前,其中的信息可能已经时异事殊

1.现实生活中万物皆是对象,每个对象都会有自己的特征,行为或作用或功能等。

而 Java 是面向对象的编程语言,用对象的形式来模拟现实世界;

在 Java 世界对象中,属性通常用来描述对象的特征、特点,而方法用来体现对象的行为、作用或功能等。

对象的特征分为静态特征和动态特征两种

静态的特征指对象的外观、性质、属性等

动态的特征指对象具有的功能、行为等

人们将对象的静态特征抽象为属性,用数据来描述,在 Java 语言中称之为变量;----成员变量

人们将对象的动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在 Java 语言中称之为方法.----成员方法

类:将具有相同属性及相同行为的一组对象称为类

对象:用来描述客观事物的一个实体,由一组属性和方法构成。

2.对象同时具有属性和方法两项特性

对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割 .

3.类是从对象中抽象出来,反过来类又是对象的"模版",定义对象将会拥有的特征(属性)和行为(方法)

类是对象的类型,不同于 int 类型:具有方法.

类, 可以理解为现实世界中的物种,是抽象的概念,仅仅是模板,例如:人类

对象,可以理解为物种的一个实体、个体、个例、实例等;是一个你能够看得到、摸得着的具体实体,例如:张三。

张三是一个人,是对象,他的类型是人类不是狗类马类,他是人类中的一个个体、个例、实体、实例。

类是对象的类型,对象是类的实例。

如何理解 Java 中的构造函数?

在现实生活中,我们如何创建一个房子对象?是不是要有工人的劳作和房子的设计图纸,根据图纸我们就知道我们的这个房子建成后应该是什么样子的;

在 Java 中,这个构造函数就非常类似生活中的房子设计图纸,new 关键字就好比工人在劳作;

在生活中,工人劳作加上房子的设计图纸可以造出一个房子对象,在 Java 中,我们使用 new 关键字加上构造函数就可以创造出一个对象!

在 Java 中,我们使用 class 关键字来定义一个类,其实就是在详细的制作这个设计图纸,模板;

如何理解 Java 中的有参构造函数和无参构造函数?

A.生活中我们创建一个房子对象,创建完成后可能是一个毛坯房,里面没有家电等设备(这可以理解为 java 中的无参构造函数),等到装修的时候再一个个买(可以理解为创建后手动初始化);

B.生活中有时候我们造一个房子对象,要求完工后就可以提包入住,里面各种家电齐全,不用自己后来再去买的,这个就可以理解为我们的有参构造函数,这些参数就好比家电!

4.所有 Java 程序都以类 class 为组织单元,关键字 class 定义自定义的数据类型。

类的结构组成:属性、方法、构造方法(不写则默认存在);

定义一个 class,文件内的类名,要有一个是 Public 的,同时和文件名是一样的。

5.Java 类模版:

public class 类名 {

//定义属性部分

    属性1的类型 属性1;

    属性2的类型 属性2;

…

    属性n的类型 属性n;

    //定义方法部分

    方法1;

    方法2;

    …

    方法m;

}

6.定义一个类的步骤:定义类名----编写类的属性----编写类的方法

7.使用对象的步骤:

定义一个类 //使用 class 关键字

定义类名----

编写类的属性----

编写类的方法

创建对象 //使用 new 关键字

类名 对象名 = new 类名(); 或

类名 对象名 = new 类名(参数列表);

例如:School center = new School();

引用对象成员: //使用“.”进行以下操作

引用属性:对象名.属性

引用方法:对象名.方法名()

这里的点可以理解为【的】。例如:

System.out.println(center.name); //调用 center 的 name 属性值

center.showCenter(); //调用 showCenter()方法

center.name = "北京中心"; //给 name 属性赋值

8.面向对象的优点:

A.与人类的思维习惯一致;

B.信息隐藏提高程序的可维护性和安全性;

C.提高程序可重用性。

9.如何定义类的方法:

A.定义类的方法名称; //最好见名知意

B.确定方法返回值的数据类型;

C.确定方法执行需要的形参及数据类型;

D.定义方法实现的主体,即方法的大括号内的内容。

例如:

public 返回值类型 方法名() {

       //这里编写方法的主体

}

10.方法的返回值:

return 表达式; //作用: 跳出(终止)方法、返回结果

两种情况

如果方法具有返回值,方法中必须使用关键字 return 返回该值,返回值类型为该返回值的类型

如果方法没有返回值,返回值类型为 void

11.方法的调用:

方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果

方法调用:执行方法中包含的语句。

调用的形式:对象名.方法名();

方法之间允许相互调用,不需要知道方法的具体实现,实现重用,提高效率。

方法调用,使用如下两种形式:

同一个类中的方法,直接使用“方法名()”调用

不同类的方法,首先创建对象,再使用“对象名.方法名()”来调用

12.关于方法的常见错误:

A.方法的返回值类型为 void,方法中不能有 return 返回值!

B.方法不能返回多个值。python 语言是可以的,Java 若真想如此,可以考虑使用集合作为返回类型。

C.多个方法不能相互嵌套定义!即不能方法中定义方法!

D.不能在方法外部直接写程序逻辑代码!

13.成员变量和局部变量:

变量声明的位置决定了变量的类型,也决定变量作用域

变量作用域确定可在程序中按变量名访问该变量的区域

定义在类中的类属性,是成员变量;定义在方法中的变量是局部变量;

两者区别:

作用域不同

局部变量的作用域仅限于定义它的方法

成员变量的作用域在整个类内部都是可见的

初始值不同

Java 会给成员变量一个初始值

Java 不会给局部变量赋予初始值

注意:

A.在同一个方法中,不允许有同名局部变量,在不同的方法中,可以有同名局部变量;

B.在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级,覆盖成员变量!

14.定义带参数的方法

调用带参数的方法

对象名.方法名(参数 1, 参数 2,……,参数 n);

实参的类型、数量、顺序都要与形参一一对应

调用方法常见的错误:

调用方法时不能指定实参类型!

形参和实参数据类型不一致!

形参和实参数量不一致!

调用方法后没有对返回值作任何处理!

15.方法形参也可以是引用类型,比如数组,参数对象

可以将多个相关的信息封装成对象,作为参数传递,避免方法有太多的参数!

16.包,可以简单理解为文件夹,但是和文件夹又有一点不同。

为了便于管理大型软件系统中数目众多的类,解决类的命名冲突的问题,Java 引入了包机制。它即是一种命名机制,又是一种安全机制。

包可以包含类和子包。

包的作用:

允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件--分类。

防止命名冲突

更好的保护类、属性和方法(访问权限的包范围)

如何创建包:使用 package 关键字

在 Java 的源文件中,第一行代码:package 包名;

例如:package com.ddb.javacore.branch;

package 语句中,用‘.’来指明包(目录)的层次;

包命名规范:

包名由小写字母组成,不能以圆点开头或结尾;

包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名

包名后续部分依不同机构内部的规范不同而不同。

为了使用不在同一包中的类,需要在 Java 程序中使用 import 关键字导入这个类

import 语句告诉编译器到哪里去寻找类。导入包语法:

import 包名. 类名;

例如:

import java.util.*; //导入 java.util 包中所有类,星号是通配符

import java.util.Scanner; //导入指定包中指定类

可以不使用 import 语句导入需要使用的类,而是在需要使用类名的时候使用完整的包名.类名来引用该类!

Eclispe 中,导入包,可以使用组织导入:Ctrl+Shift+o

17.静态导入:import static 可以减少击键次数,省略写类名;

例如:

import static java.lang.System.out; //静态导入 System.out

out.println(person); //使用时,不必再写 System.了!!

18.JDK 中常见的包

SUN公司在JDK中为程序开发者提供了各种实用类,下面简要介绍其中最常用的几个包

⑴ java.lang ——包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。在java.lang包中还有一个子包:java.lang.reflect用于实现java类的反射机制。

⑵ java.awt —— 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

⑶ javax.swing——此包用于建立图形用户界面,此包中的组件相对于 java.awt 包而言是轻量级组件。

⑷ java.applet——包含applet运行所需的一些类。

⑸ java.net——包含执行与网络相关的操作的类。

⑹ java.io —— 包含能提供多种输入/输出功能的类。

⑺ java.util——包含一些实用工具类,如定义系统特性、与日期日历相关的方法。

19.打包工具——jar 命令的使用:

方式一:使用 jar 命令

  只要在命令行中用以下命令就可以将一个包打成一个jar文件

 jar –cvf create.jar demo

-c:创建新的存档

  -v:生成详细输出到标准输出上

  -f:指定存档文件名

  create.jar:是生成jar文件的名称

  demo:要打成jar文件的包 

方式二:使用 Eclispe

File—Export—java—jar file—选择目标文件

参考链接:

Java 包的静态导入 import static 和 import 的区别 http://m.2cto.com/kf/201311/259442.html

Java静态导入 - 百易城 - 博客园

其他知识:

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • 开发
    38 引用 • 159 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    286 引用 • 729 回帖
  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖 • 1 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    105 引用 • 127 回帖 • 382 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 654 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 3 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖 • 1 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 431 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 700 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 173 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 709 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 65 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖 • 1 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 9 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    266 引用 • 665 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 19 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 625 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    287 引用 • 4484 回帖 • 669 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 664 关注
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 165 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 595 关注