类与对象的基本概念(上)

文章目录

  • 类与对象的基本概念(上)
    • 一、面向对象的基本概念
      • (1)面向对象程序设计&结构化程序设计
        • 1.结构化程序设计
        • 2.面向对象程序设计
      • (2)面向对象方法的特性
        • 1.抽象
        • 2.封装
        • 3.继承
        • 4.多态
      • (3)类与对象的关系
        • 1.类的定义
        • 2.对象的定义
    • 二、类与对象的创建
      • (1)类的声明
      • (2)对象的声明与创建
    • 三、数据成员与方法成员
      • (1)数据成员
        • 1.数据成员声明
        • 2.数据成员类型
      • (2)方法成员
        • 1.方法的声明
        • 2.参数传递
        • 3.实例方法和类方法
          • ①实例方法
          • ②类方法
    • 四、包
      • (1)包的作用
      • (2)包的命名
      • (3)Java编译单元
      • (4)包的声明
      • (5)包的引入
        • 1.import 关键字
        • 2.静态引入

一、面向对象的基本概念

(1)面向对象程序设计&结构化程序设计

1.结构化程序设计

  • 通常由若干个程序模块组成,每个程序模块都可以是子程序或函数
  • 数据和功能分离,代码难于维护和复用

2.面向对象程序设计

  • 基本组成单位是类
  • 程序在运行时由类生成对象,对象是面向对象程序的核心
  • 对象之间通过发送消息进行通信,互相协作完成相应功能

(2)面向对象方法的特性

1.抽象

  • 忽略问题中与当前目标无关的方面
  • 只关注与当前目标有关的方面

2.封装

封装是一种信息隐蔽技术

  • 利用抽象数据类型将数据和基于数据的操作封装在一起
  • 用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的
  • 封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象

3.继承

基于已有类产生新类的机制

  • 是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的子类(也称为派生类);
  • 在继承过程中子类继承了超类的特性,包括方法和实例变量;
  • 子类也可修改继承的方法或增加新的方法;
  • 有助于解决软件的可重用性问题,使程序结构清晰,降低了编码和维护的工作量。

Java语言仅支持单继承:
• 单继承: 一个子类只有单一的直接超类。
• 多继承:一个子类可以有一个以上的直接超类。

4.多态

  • 超类及其不同子类的对象可以响应同名的消息,具体的实现方法却不同;
  • 主要通过子类对父类方法的覆盖来实现。

(3)类与对象的关系

类是对一类对象的描述, 对象是类的具体实例。

1.类的定义

  • 将属性及行为相同或相似的对象归为一类
  • 类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为
  • 在面向对象的程序设计中,每一个对象都属于某个特定的类

2.对象的定义

  • 现实世界中

    • 万物皆对象
    • 都具有各自的属性,对外界都呈现各自的行为
  • 程序中
    • 一切都是对象
    • 都具有标识 (identity), 属性和行为(方法)
    • 通过一个或多个变量来保存其状态
    • 通过方法(method) 实现他的行为

二、类与对象的创建

(1)类的声明

[public] [abstract | final] class 类名称
[extends 父类名称]
[implements 接口名称列表]
{ 数据成员声明及初始化;方法声明及方法体;
}
  • class: 表明其后声明的是一个类。
  • extends: 如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后
  • implements: 如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后
  • public: 表明此类为公有类
  • abstract: 指明此类为抽象类
  • final: 指明此类为终结类

(2)对象的声明与创建

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

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new创建对象时,会调用构造方法初始化对象。
  • 对象引用声明

    声明一个引用变量时并没有生成对象,引用变量可以被赋以空值

    类名 引用变量名;
    
  • 对象的创建

    new关键字返回一个对象的引用

    new <类名>(构造函数参数)
    

三、数据成员与方法成员

(1)数据成员

表示对象的状态 ,可以是任意的数据类型(简单类型,类,口,数组等)

1.数据成员声明

[public | protected | private]
[static][ final][transient] [volatile]
数据类型 变量名1[=变量初值], 变量名2[=变量初值], … ;

publicprotectedprivate 为访问控制符。
static指明这是一个静态成员变量(类变量)。
final指明变量的值不能被修改。
transient指明变量是不需要序列化的。
volatile指明变量是一个共享变量。

2.数据成员类型

一个类可以包含以下类型变量:

  • 局部变量

    在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

  • 成员变量(实例变量)

    成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

    • 没有static修饰的变量(数据成员)称为实例变量;
    • 存储所有实例都需要的属性,不同实例的属性值可能不同;
    • 可通过下面的表达式访问实例属性的值
      <实例名>.<实例变量名>
      
  • 类变量(静态变量)

    类变量也声明在类中,方法体之外,但必须声明为 static 类型。

  • static修饰。

  • 在整个类中只有一个值,为该类的所有对象共享

  • 类初始化的同时就被赋值。

  • 适用情况

    • 类中所有对象都相同的属性。
    • 经常需要共享的数据。
    • 系统中用到的一些常量值。
  • 引用格式

    <类名 | 实例名>.<类变量名>
    

(2)方法成员

1.方法的声明

[public | protected | private]
[static][ final][abstract] [native] [synchronized]
返回类型 方法名([参数列表]) [throws exceptionList]
{方法体
}
  • publicprotectedprivate 控制访问权限。
  • static指明这是一个类方法(静态方法)。
  • final指明这是一个终结方法。
  • abstract指明这是一个抽象方法。
  • native用来集成java代码和其它语言的代码。
  • synchronized用来控制多个并发线程对共享数据的访问。

返回类型

  • 方法返回值的类型,可以是任意的Java数据类型;
  • 当不需要返回值时,返回类型为void。

参数类型

  • 简单数据类型、引用类型(数组、类或接口);
  • 可以有多个参数,也可以没有参数,方法声明时的参数称为形式参数。

方法体:

  • 方法的实现;
  • 包括局部变量的声明以及所有合法的Java语句;
  • 局部变量的作用域只在该方法内部。

throws exceptionList

  • 抛出异常列表。

2.参数传递

  • 值传递:参数类型为基本数据类型时
  • 引用传递:参数类型为对象类型或数组时

可变长参数:

static double maxArea(Circle c, Rectangle... varRec) {Rectangle[] rec = varRec;for (Rectangle r : rec) {//…}
}
  • 可变长参数使用省略号表示,其实质是数组。
  • 对于具有可变长参数的方法,传递给可变长参数的实际参数可以是零个到多个对象。

3.实例方法和类方法

①实例方法

表示特定对象的行为, 声明时前面不加static修饰符

  • 实例方法调用

    给对象发消息,使用对象的某个行为/功能:调用对象的某个方法。

     <对象名>.<方法名>([参数列表])
    

    <对象名>为消息的接收者。

②类方法

表示类中对象的共有行为,也称为静态方法,声明时前面需加static修饰,不能被声明为抽象的。

  • 类方法的调用

    可以类名直接调用,也可用类实例调用。

     <对象名>.<方法名>([参数列表])
    
     <类名>.<方法名>([参数列表])
    

四、包

包是一组类的集合,一个包可以包含若干个类文件,还可包含若干个包

(1)包的作用

  • 将相关的源代码文件组织在一起。 (把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。)
  • 类名的空间管理,利用包来划分名字空间可以避免类名冲突。 (如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。)
  • 提供包一级的封装及存取权限。(包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。)

(2)包的命名

  • 每个包的名称必须是“独一无二”的。
  • Java中包名使用小写字母表示。

命名方式建议:

  • 将机构的Internet域名反序,作为包名的前导;
  • 若包名中有任何不可用于标识符的字符,用下划线替代;
  • 若包名中的任何部分与关键字冲突,后缀下划线;
  • 若包名中的任何部分以数字或其他不能用作标识符起始的字符开头,前缀下划线。

(3)Java编译单元

  • 一个Java源代码文件称为一个编译单元,由三部分组成:

    • 所属包的声明(省略,则属于默认包);
    • Import (引入)包的声明,用于导入外部的类;
    • 类和接口的声明。
  • 一个编译单元中只能有一个public类,该类名与文件名相同,编译
    单元中的其他类往往是public类的辅助类,经过编译,每个类都会
    产一个class文件。

(4)包的声明

  • 1.命名的包(Named Packages)

    • 其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。

    • 包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。

    • 例如: package Mypackage;

  • 2.默认包(未命名的包)
    • 如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。
    • 不含有包声明的编译单元是默认包的一部分。

注:
• 包名就是文件夹名,即目录名;
• 目录名并不一定是包名;

(5)包的引入

为了使用其它包中所提供的类,需要使用import语句引入所需要的类。
Java编译器为所有程序自动引入包java.lang。

1.import 关键字

import package1[.package2…].(classname|*);
  • package1[.package2…]表明包的层次,对应于文件目录;
  • classname指明所要引入的类名;
  • 如果要引入一个包中的所有类,可以使用星号(*)来代替类名。

2.静态引入

如果在程序中需要多次使用静态成员,则每次使用都加上类名太繁
琐。用静态引入可以解决这一问题

  • 单一引入是指引入某一个指定的静态成员,例如:

    import static java.lang.Math.PI;
    
  • 全体引入是指引入类中所有的静态成员,例如:

    import static java.lang.Math.*;
    

【Java程序设计】类与对象的基本概念(上)相关推荐

  1. 【Java程序设计】类与对象的基本概念(下)

    类与对象的基本概念(下) 文章目录 类与对象的基本概念(下) 一.类的访问权限控制 1.访问控制修饰符 (1)默认访问修饰符-不使用任何关键字 (2)私有访问修饰符-private (3)受保护的访问 ...

  2. JAVA设计一个fan类_北京信息科技大学java语言程序设计-类和对象

    北京信息科技大学java语言程序设计-类和对象 [实验名称]实验2 类和对象 [实验目的] 1.学习和掌握Java创建对象的方法. 2.学习和掌握通过创建对象.使用类的方法. 3.学习和掌握Java类 ...

  3. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  4. 【清华大学-郑莉教授】C++语言程序设计 类与对象

    [清华大学-郑莉教授]C++语言程序设计 类与对象 面向对象程序设计的基本特点 类与对象的基础概念和语法 类和对象 构造函数和析构函数 默认构造函数 委托构造函数 复制构造函数 右值引用 移动构造函数 ...

  5. java面向对象-类和对象

    Java面向对象笔记 文章目录 Java面向对象笔记 java面向对象 类和对象 什么是类 定义 创建和使用 公式 构造方法 什么是构造方 怎么定义和使用构造方法 实列 This关键字 什么是成员变量 ...

  6. java演练 类与对象 给我一个数字还你一个字符串

    java演练 类与对象 给我一个数字还你一个字符串 视频 https://www.ixigua.com/i6870502014800003598/ 代码 类 public class Game {pu ...

  7. java学习--类与对象

    文章目录 java学习--类与对象 类的定义与对象的使用 类的私有成员的使用 java学习–类与对象 类的定义与对象的使用 类的定义与对象的使用 类的定义步骤: public 类名: //定义成员变量 ...

  8. java程序设计_Java程序设计-类和对象(笔记)

    1)类(Class)和对象(Object)是面向对象的核心概念. 类是对一类事物的描述,是抽象的.概念上的定义 对象是实际存在的该类事物的每个个体,因而也称为实例(instance). 2)" ...

  9. Java复习(二)类与对象的基本概念

    2.1面向对象的程序设计方法概述 对象 程序中: 一切皆是对象 都具有标识,属性和行为 通过一个或多个变量来保存其状态 通过方法实现他的行为 类 将属性及行为相同或相似的对象归为一类 类可以看成是对象 ...

最新文章

  1. 使用HMTL5 API监控前端性能
  2. angr学习笔记(2)
  3. 用java制作扑克牌_阿里三面被挂,幸获内推,历经5轮终于拿到口碑offer(java研发)...
  4. MySQL数据库-笔记03【范式(1NF、2NF、3NF)、查询练习题*10道(附解析)】
  5. 一文读懂 HTTP/1HTTP/2HTTP/3
  6. vmware安装渗透系统 Linux Kail最新版
  7. H3C vrrp *** ipsec 基本配置
  8. 【测试用例】2021年逢面试必考题
  9. ppt转html5 带动画_这组PPT设计,真的太漂亮了!
  10. 移动端开发之px,em和rem详解
  11. 设置SQLSERVER的错误日志数量和查找SQLSERVER安装错误日志
  12. 知识点收录01---关于Tomcat的一些知识点
  13. WinForm(一) WinForm入门与基本控件使用
  14. sklearn文本聚类分析
  15. 吉林大学计算机学院控制与应用实验室,2019计算机考研吉林大学国家物联网虚拟仿真实验教学中心简...
  16. java。用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。
  17. 谷歌pixel3axl开发者模式_谷歌推出新一代安卓系统“Android 10”
  18. n一加关闭小部件_小部件
  19. 对话系统的历史 聊天机器人发展
  20. 若问杭州何处好,此中听得野莺啼——关于杭州

热门文章

  1. C#之整数与字符串互转
  2. svm分类代码_SVM的原理及实现垃圾邮件分类代码解析:
  3. 水晶报表中对某一栏位值进行处理_终于有人讲清楚了,BI和报表的差异!
  4. python中property函数_Python中的property()函数
  5. 端口 0-65536 TCP和UDP端口的区别
  6. 基础03String类、static、Arrays类、Math类
  7. matlab加热模型,基于MATLAB钢丝感应加热模型及其温度场特性的研究
  8. uml建模工具_Visual Paradigm 教程[UML]:绘制UML配置文件图
  9. EasyUI中的combobox下拉框自适应高度
  10. php链接没有下划线,html超链接怎么去掉下划线