JavaSE11——面向对象_类和对象

news2024/12/25 12:26:09

一 面向对象

早期的程序设计经历了“面向问题”、“面向过程”的阶段,随着计算机技术的发展,以及所要解决问题的复杂性的提高,以往的程序设计方法已经不能适应这种发展的需求。于是,从 20 世纪 70 年代开始,相继出现了多种面向对象的程序设计语言(如图 所示),并逐渐产生了面向对象的程序设计方法。面向对象的程序设计涉及到对象、封装、类、继承及多态等几个基本概念。

在这里插入图片描述

1、 Java语言的基本元素:类和对象

何谓面向对象?
面向对象程序设计是将人们认识世界过程中普遍采用的思维方法应用到程序设计中。对象是现实世界中存在的事物,它们是有形的,如某个人、某种物品;也可以是无形的,如某项计划、某次商业交易。对象是构成现实世界的一个独立单位,人们对世界的认识,是从分析对象的特征入手的。

对象的特征分为静态特征和动态特征两种。静态的特征指对象的外观、性质、属性等;动态的特征指对象具有的功能、行为等。客观事物是错综复杂的,但人们总是从某一目的出发,运用抽象分析的能力,从众多的特征中抽取最具代表性、最能反映对象本质的若干特征加以详细研究。

  • 人们将对象的静态特征抽象为属性,用数据来描述,在 Java 语言中称之为变量
  • 人们将对象的动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在 Java语言中称之为方法
  • 一个对象由一组属性和一组对属性进行操作的方法构成。

1.1 面向对象的思想概述

类(Class)和对象(Object)是面向对象的核心概念。

  • 类是对一类事物的描述,是抽象的、概念上的定义
  • 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。

将具有相同属性及相同行为的一组对象称为类。广义地讲,具有共同性质的事物的集合就称为类。

在面向对象程序设计中,类是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。在 Java 程序设计中,类被认为是一种抽象数据类型,这种数据类型,不但包括数据,还包括方法。这大大地扩充了数据类型的概念。

类是一个抽象的概念,要利用类的方式来解决问题,必须用类创建一个实例化的类对象,然后通过类对象去访问类的成员变量,去调用类的成员方法来实现程序的功能。这如同“汽车”本身是一个抽象的概念,只有使用了一辆具体的汽车,才能感受到汽车的功能。

一个类可创建多个类对象,它们具有相同的属性模式,但可以具有不同的属性值。Java 程序为每一个类对象都开辟了内存空间,以便保存各自的属性值。

在java中万事万物皆对象

可以理解为:类 = 抽象概念的人;对象 = 实实在在的某个人

  • 面向对象程序设计的重点是类的设计
  • 类的设计,其实就是类的成员的设计

面向对象的程序设计有三个主要特征,如下
封装性
继承性
多态性

2、Java类及类的成员

现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同

理,Java代码世界是由诸多个不同功能的构成的。

常见的类的成员有:

  • 属 性:对应类中的成员变量

  • 行 为:对应类中的成员方法

Field = 属性 = 成员变量,Method = (成员)方法 = 函数

3、类的语法格式

修饰符 class 类名 {
	属性声明;
	方法声明;
}
说明:修饰符public:类可以被任意访问
	类的正文要用{ }括起来

举例:

public class Person{
	private int age ; //声明私有变量 age
	public void showAge(int i) { //声明方法showAge( )
		age = i;
	}
}

4、创建Java自定义类

步骤:

  1. 定义类(考虑修饰符、类名)
  2. 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
  3. 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

二 类和对象

在Java中,类和对象是两个相关但不同的概念。

  1. 类(Class):类是对象的模板或蓝图,它定义了一组属性和方法来描述特定类型的对象。类是抽象的,是对一类对象的通用特征和行为的描述。例如,一个"Person"类可以定义人的属性(姓名、年龄等)和方法(吃饭、睡觉等)。
  2. 对象(Object):对象是类的一个具体实例。它是类的实例化,通过类创建出来的具体个体。对象是具体的,拥有类定义的属性值和方法行为。例如,基于"Person"类创建的一个具体人就是一个对象,具有自己的姓名、年龄和相关的行为。

类和对象的区分

在现实世界中,属于同一类的对象很多,类是抽象的,不是具体的,我们人习惯以对象的方式认识现实世界;

例如我说一辆汽车,那你脑海中立马就能够呈现出一辆汽车的模样吧,不管他是什么品牌、什么颜色、什么价格、什么参数等总而言之,都是一辆汽车,都是属于"汽车类"产品;

在这里插入图片描述

tips:类是抽象的,对象是具体的,对象是类的实例化;

类是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征行为特征来描述该类事物。

  • 属性:该事物的状态信息;

  • 行为:该事物的功能信息;

    类和对象的举例

    • 类举例:

      举例:猫类

      属性:名字、体重、年龄、颜色; 行为:走、跑、叫;

    • 实例化对象:

      猫对象:

    属性:旺财、8kg、6岁、棕色;行为:悄悄的走、飞快的跑、喵喵叫;

总结来说,类是对一类对象的通用描述,定义了对象的结构和行为;而对象是类的一个具体实例,具有类定义的属性和方法。

三 对象的创建和使用

1、创建对象

创建对象语法: 类名 对象名 = new 类名();
使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)

举例:

public class Animal {
        public int legs;
        public void eat(){
            System.out.println(Eating.);
        }
        public viod move(){
            System.out.println(Move.);
        }
    }

创建对象:

public class Zoo{
        public static void main(String args[]){
			//创建对象
            Animal xb=new Animal();
            xb.legs=4;//访问属性
            System.out.println(xb.legs);
            xb.eat();//访问方法
            xb.move();//访问方法
        }
    }

2、Java 中类与对象

类(class),即具有相同或相似特征的某一类事物的统称。如人类,即“人”这一类事物,其所拥有共同的特征,如人都有发达的大脑、都直立行走、会思考、会劳动,所以才称为“人类”。

对象(object),类中某一特定的成员。如张三、李四,他们拥有人类所有的共同特征,同时还拥有个体特有的特征,如年龄、身高、姓名。

类是对象的抽象和概括;对象是类的实例化,是一个个具体的个体,一切事物皆对象。

说明:
如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套
副本,且互不干扰。

    public class Zoo {
        public static void main(String args[]) {
            Animal xb = new Animal();
            Animal xh = new Animal();
            xb.legs = 4;
            xh.legs = 0;
            System.out.println(xb.legs); // 4
            System.out.println(xh.legs); // 0
            xb.legs = 2;
            System.out.println(xb.legs); // 2
            System.out.println(xh.legs); // 0
        }
    }

3、提 示

类的访问机制:

  • 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。
    (例外:static方法访问非static,编译不通过。)
  • 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中
    定义的成员。

4、对象的产生

Person p1 = new Person();执行完后的内存状态。其中类定义如下:

class Person{
	int age;
	void shout(){
		System.out.println(“oh,my god! I am ” + age);
	}
}

5、匿名对象

我们也可以不定义对象的句柄,而直接调用这个对象的方法。这
样的对象叫做匿名对象。

  • 如:new Person().shout();

使用情况

  • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
  • 我们经常将匿名对象作为实参传递给一个方法调用。

6、成员变量的默认值

数据类型默认值
基本类型整数(byte,short,int,long)0
浮点数(float,double)0.0
字符(char)‘\u0000’
布尔(boolean)false
引用数据类型数组,对象,Stringnull

四 小练习

  • 定义手机类并使用:
    • 属性:品牌,价格,颜色;
    • 行为:打电话,发短信

1)定义Phone类:

public class Phone {

    //成员变量
    String brand;
    int price;
    String color;

    //成员方法
    //打电话
    public void call(String name){
        System.out.println("给"+name+"打电话");
    }

    //发短信
    public void sendMessage(){
        System.out.println("大家新年好!");
    }
}

2)定义测试类:

public class Demo02 {
    public static void main(String[] args) {
        //创建对象
        Phone p=new Phone();

        System.out.println("品牌: "+p.brand);     // null
        System.out.println("价格: "+p.price);     // 0
        System.out.println("颜色: "+p.color);     // null

        System.out.println("-------");

        p.brand="华为";
        p.price=2999;
        p.color="银白色";

        System.out.println("品牌: "+p.brand);     //华为
        System.out.println("价格: "+p.price);     //2999
        System.out.println("颜色: "+p.color);     //银白色
        System.out.println("------------");

        p.call("刘德华");
        p.sendMessage();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试工具 — JMeter

1、jmeter介绍 Apache JMeter 应用程序是开源软件,是一个 100% 纯 Java 应用程序。用于测试Web应用程序、API和其他网络协议的性能。它具有以下特点: 1. 开源免费:JMeter是Apache软件基金会下的一个开源项目,它被称为Apache JMe…

2011年408计组真题步骤解析

12.下列选项中,描述浮点数操作速度指标的是D 。 A.MIPS B.CPI C.IPC D.MFLOPS 解析:浮点数?float?选有F的D 13.float 型数据通常用 IEEE 754 单精度浮点数格…

企业数据加密软件都有哪些?对公司能加密的软件有哪些

在当今的数字化时代,企业的信息安全已经成为了一个重要的议题。企业数据加密软件是一种能够保护企业敏感信息的工具,它通过将数据转化为无法直接理解的代码,从而防止未经授权的访问和泄露。本文将从企业数据加密软件的定义、种类以及一些具体…

Web自动化测试 —— capability参数配置

一、capability概述 capability是webdriver支持的标准命令之外的扩展命令(配置信息)配置web驱动属性,如浏览器名称、浏览器平台。结合selenium gird完成分布式、兼容性测试官网地址: https://www.selenium.dev/zh-cn/documentati…

ssm+vue的在线测试管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的在线测试管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

考完PMP,还能继续学什么?

大家好,我是老原。 最近有不少粉丝朋友来咨询我,项目经理有什么证书可以考?考过PMP了,还能学点啥来提升一下自己? 在我看来,项目管理可考的证书有很多,但很多项目经理也确确实实存在一些思维盲…

[学习笔记]ARXML - Data Format

参考AUTOSAR文档: https://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdfhttps://www.autosar.org/fileadmin/standards/R22-11/FO/AUTOSAR_TPS_ARXMLSerializationRules.pdf 编码 arxml只允许使用UTF-8编码&#xff…

先来聊聊MySQL的binlog文件解析

先来聊聊MySQL的binlog文件解析 简介MySQL binlog的三种工作模式binlog相关参数mysqlbinlog解析工具 看腻了文章就来听听视频讲解吧:https://www.bilibili.com/video/BV1F94y1s7xe/ 简介 MySQL的binlog日志是用来记录MySQL对数据库有变更操作的记录,包…

TCP为什么是三次握手

TCP:Transmission Controll Protocol:传输控制协议;面向连接、可靠的、基于字节流的传输层协议 ​ 面向连接:客户端和服务端进行连接的协议 ​ 可靠性:保证信息能够从发送端到达接收端;这是…

四川玖璨电子商务有限公司抖音电商界的领跑者

在当今的电商市场中,四川玖璨电子商务有限公司以其卓越的表现和领先的地位,被广大消费者和业内人士所认可。作为抖音电商领跑者,该公司以其精湛的产品和服务,创新的营销策略,及客户至上的理念,成为这个充满…

Spring学习笔记12 面向切面编程AOP

Spring学习笔记11 GoF代理模式_biubiubiu0706的博客-CSDN博客 AOP(Aspect Oriented Programming):面向切面编程,面向方面编程. AOP是对OOP的补充延申.底层使用动态代理实现. Spring的AOP使用的动态代理是:JDK动态代理_CGLIB动态代理技术.Spring在这两种动态代理中灵活切换.如…

Lua多脚本执行

--全局变量 a 1 b "123"for i 1,2 doc "Holens" endprint(c) print("*************************************1")--本地变量(局部变量) for i 1,2 dolocal d "Holens2"print(d) end print(d)function F1( ..…

没有 RunInstallerAttribute.Yes 的公共安装程序

安装window服务时报“没有 RunInstallerAttribute.Yes 的公共安装程序”的问题

Pytorch单机多卡分布式训练

Pytorch单机多卡分布式训练 数据并行: DP和DDP 这两个都是pytorch下实现多GPU训练的库,DP是pytorch以前实现的库,现在官方更推荐使用DDP,即使是单机训练也比DP快。 DataParallel(DP) 只支持单进程多线程…

Aqara秋季品鉴会众新品亮相 空间智能全面进化

9月26日,全球IoT独角兽Aqara以“空间智能,全面进化”为主题在北京三里屯CHAO酒店举办了秋季品鉴会。会上正式发布了方舟智慧中枢M3、卡农智能墙壁开关Z1 Pro、银河系列高端灯具V1以及具备全新功能升级的场景传感器FP2,方舟技术升级至2.0版本。…

浅谈Deep Learning 与 Machine Learning 与Artificial Intelligence

文章目录 三者的联系与区别 三者的联系与区别 “Deep Learning is a kind of Machine Learning, and Machine Learning is a kind of Artificial Intelligence.” 人工智能(AI),机器学习(Machine Learning,简称ML&am…

玩转 CODING 自动化助手,助力高效研发!

点击链接了解详情 在日常工作中,您是否会遇到下面的情况: 作为研发人员,从需求拆分出来的开发子任务完成时,还要手动修改需求为完成状态,不仅耗时还容易遗漏; 作为产品经理,每天都要关注需求/任…

游戏开发过程中需要注意哪些问题呢?

游戏开发是一个复杂的过程,需要注意多个方面的问题。以下是一些需要特别关注的关键问题: 游戏设计: 确定游戏的核心玩法和目标受众。 制定详细的游戏设计文档,包括角色、关卡设计、游戏机制和故事情节。 技术选择:…

项目04-基于Docker的Prometheus+Grafana+AlertManager的飞书监控报警平台

文章目录 一.项目介绍1.流程图2.拓扑图3.详细介绍 二.前期准备1.项目环境2.IP划分 三. 项目步骤1.ansible部署软件环境1.1 安装ansible环境1.2 建立免密通道1.3 批量部署docker 2 部署nginx、MySQL以及cadvisor、exporter节点2.1 在nginx节点服务器上面配置nginx、node_exporte…

高效批量剪辑的秘诀与技巧,虚化背景技巧在视频剪辑中的应用与创意

你是否曾经为了制作一个高质量的视频而感到烦恼?视频剪辑是一项繁琐的工作,但是使用批量剪辑工具可以让这个过程变得更加高效。今天,我们将向您介绍一款强大的批量剪辑工具——视频工厂,帮助您轻松制作高质量视频。 首先&#xff…