Java类与对象知识点总结(java类与对象五个例题)
ccwork 2025-03-14 15:30 10 浏览
1.类与对象
java是一门纯面向对象的语言,在java面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要是要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对于事物的认知,对于大型程序的设计,扩展以及维护都非常友好。
三个基本特征:
(1)封装:保护内部的操作不被破坏,隐藏代码的实现细节;
(2)继承:在父类的基础之上继续在子类内部进行扩充;
(3)多态:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。
2.类的声明
[修饰符] class 类名{//类的声明部分
[成员变量]
[成员方法]
}
3.成员变量:在类体的变量部分中定义的变量,也称为属性。
成员变量:定义在类中,方法体之外。变量在创建对象时实例化。成员变量可被类中的方法、构造方法以及特定类的语句块访问。
成员变量的声明:[修饰符] 数据类型 变量名 [ = 初始值 ];
public private protected用于表示成员变量的访问权限。
static表示该成员变量为类变量,也称为静态变量。
final表示将该成员变量声明为常量,其值无法更改。
可以在声明成员变量的同时对其进行初始化,如果声明成员变量时没有对其初始化,则系统会使用默认值初始化成员变量。
4.成员方法的声明:[修饰符] 返回值类型 方法名([数据类型 参数名,……]){
//方法体,该方法完成的功能代码
}
5.构造器
[修饰符] 构造器名([数据类型 参数名,……]){
//构造器完成的功能代码
}
构造器名必须和类名一致
构造器没有返回值类型
任何类都含有构造器。如果没有显式地定义类的构造器,
则系统会为该类提供一个默认的无参的构造器。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。
6.构造方法与创建对象
(1)构造方法是class类中特殊的方法
(2)使用类创建对象时,需要用到它的构造方法
(3)class类中构造方法的名字必须和class类的名字保持一致
(4)构造方法和普通的方法相比,构造方法没有类型,没有类型也就意味着构造方法不能有返回值
(5)一个class类中,如果没有自定义构造方法,那么该类会有一个默认的构造方法;如果用户自定义了构造方法,那么就不会有默认的构造方法
(6)默认的构造方法中没有任何参数,方法体中没有任何语句
(7)一个class类中可以有多个构造方法,但是每个构造方法的参数和参数类型应当有差别,以此来辨别不同的构造方法
(8)创建对象时,先声明对象,然后用new运算符和类的构造方法为声明的对象分配变量。类中没有自定义的构造方法时,使用默认的构造方法;有一个或多个构造方法时,使用指定的构造方法
对象的引用与实体
Point point = new Point();
Point:类名
point:对象名称
new Point():对象的实体
对象的引用就是存放对象的内存地址。
7.参数传值
其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中修改参数值时,无论是基本类型的参数还是引用类型的参数,修改的只是该参数的拷贝,不影响函数实参的值,如果修改的是引用类型的成员值,则该实参引用的成员值是可以改变的,
8.对象组合
类中包含某个对象,创建该类的对象时,该对象就会有其它对象
对于同一个类的两个对象,如果二者有同样的引用,就会用同样的实体,因此改变其 中一个对象的实体,就会导致另一个对象的实体发生同样的变化。
9.实例成员与类成员
类体中包括成员变量的声明和方法的定义,成员变量又分为实例变量和类变量,定义的方法可分为实例方法和类方法。
实例变量与类变量的区别:
(1)在声明成员变量时,用关键字static修饰的称作类变量(类变量也叫静态变量),否则称作实例变量。
(2)不同对象的实例变量互不相同。
(3)所有对象共享类变量。
(4)类变量可以直接通过类名访问,而实例变量不能,但是类变量和实例变量都可以通过对象访问。
实例方法和类方法的区别:
(1)声明方法时,方法类型前面不加关键字static修饰就是实例方法、加static修饰就是类方法(静态方法)
(2)对象调用实例方法,实例方法中不仅可以操作实例变量,也可以操作类变量。
(3)类名和对象调用类方法,类方法不可以操作实例变量。
10.方法重载
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重多个方法在同一个类中多个方法具有相同的方法名多个方法的参数不相同,类型不同或者数量不同
方法重载特点
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
11.this关键字
this的两种使用方法:
如果发生局部变量和成员变量命名冲突时,可以通过this.成员变量名的方式区分成员变量和局部变量。
一个构造方法中需要调用本类的另一个构造方法,可以通过this()的方式调用,但this()必须要书写在第一行。
12.static关键字:
静态变量: 使用static修饰的成员变量叫做静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。
静态方法: 使用static修饰的成员方法叫做静态方法,静态方法可以不依赖于任何对象进行访问(对于静态方法来说,是没有this的),由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
调用格式:类名.静态变量名 ,类名.静态方法名()
13.包
包的定义
java程序是由一个public类和众多非public的类组成,在java程序的第一行加入 package包名称;",就可以把*class文件保存在相应的包内;当需要调用此包中的类时,用“包名称,类名称”的格式调用,这样可以避免相同类名的冲突。
在命名包名称时,尽量避开与系统冲突的名字,例如java.lang等;同时包名一般都采用小写形式。一日程序类中出现了包名称之后,在执行程序使用类名称时,应尽量带上包名称,而不是进入包内执行。
在以后进行项目开发中,所有java文件一定要使用package定义包。
包的导入
因为包之间会存在相互调用的情况,一个包不但会调用本包中类,还会调用其他包中的类,所以需要用关键词“import”进行导入包中的类,格式:import 包名称类名称;
当需要导入其他包中的若干类,如果一个一个的写比较麻烦,可以用格式: import包名称*来完成导入。
使用通配符“*”并不意味着将包内的类全部导入,而是按照需求导入需要什么类就导入什么类。如果在不同的包中包含有相同名称的类名,可以采用包名称类名称加以区分
14.import语句
为了简化编程,Java 引入了 import 关键字,import 可以向某个 Java 文件中导入指定包层次下的某个类或全部类。. import 语句位于 package 语句之后,类定义之前。. 一个 Java 源文件只能包含一个 package 语句,但可以包含多个 import 语句。. 使用 import 导入单个类的语法格式如下:. import 包名+类名; 上面语句用于直接导入指定类,例如导入前面的 example.Test 类,代码如下:. import example.Test; 使用 import 语句导入指定包下全部类的用法按如下:. import example.*;
15.访问权限
Private
Protected
Public
友好的
15.jar文件
什么是jar包?
JAR文件的全称是Java Archive File,意思是Java档案文件。是一种压缩文件,与常见的ZIP压缩文件兼容。两者最大的区别是在JAR文件中默认包含一个名为META-INF/MANIFEST.MF的清单文件,这个文件是生成JAR文件时由系统自动创建的。
使用jar包的好处
安全,可以对其进行数字签名,只让能够识别数字签名的用户使用里面的东西。
加快下载速度;
压缩,使文件变小,与ZIP压缩机制完全相同。
包封装。能够让JAR包里面的文件依赖于统一版本的类文件。
可移植性,能够在各种平台上直接使用。
把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。
什么情况下使用jar包?
当开发一个应用程序后这个应用程序包含了很多类,如果需要把这个程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个文件提供给别人使用。只要在别人系统的CLASSPATH环境变量中添加这个文件,则java虚拟机就可以自动在内存中解压这个jar包。
相关推荐
- 二十三、Java类与对象简介(java第十一章类和对象)
-
在Java编程语言中,类(Class)和对象(Object)是面向对象编程(OOP)的核心概念。描述类类是Java程序的基本组成单元,是对象的模板。类定义了对象的属性和方法。属性是对象的状态信息,而方...
- 设计模式-结构型-代理模式(proxy)
-
1.概念需要给对象提供一个代理以控制对该对象的访问,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介;根据代理类生成时机不同,分为静态代理和动态代理;静态代理代理类在编...
- 深度解析设计模式七大原则之——里氏替换原则
-
临近端午节,各位读者,你们假期行程安排好了吗?“菜鸟”已经做好决定了,谁都不能阻拦(产品经理也不行),“菜鸟”要好好在家休息三天。最近实在是太累了,一直在疯狂的加班。好了好了言归正传,开始我们的正文。...
- Java代理模式详解:智能中介的编程艺术
-
一、生活场景中的代理思维想象您要租房子,但不想直接与房东打交道,这时房产中介就发挥作用了:1.中介帮您筛选房源(访问控制)2.签约前验证房东资质(预处理)3.协助办理合同手续(功能增强)4.处...
- 哪个创意最能打动你? 为你欣赏的“创意之星”投一票
-
这一期的《超级课堂·暑期特别活动》将评出5位“创意之星”,获得价值2000元的奖品。本期我们选登了部分中小学生在昙华林留下的创意作品,欢迎为最能打动你的作品投上一票。大众评审目前采取微信投票:扫描二维...
- Netty基础—6.Netty实现RPC服务(netty reactor)
-
大纲1.RPC的相关概念2.RPC服务调用端动态代理实现3.Netty客户端之RPC远程调用过程分析4.RPC网络通信中的编码解码器5.Netty服务端之RPC服务提供端的处理6.RPC服务调用端实现...
- 静态代理和动态代理(静态代理和动态代理的优缺点)
-
1.什么是代理很多人肯定听过和看到过飞机票代理点,火车票代理点。那这些代理点干得事情就是帮航空公司,火车站出售火车票的工作。它们算是一个中间商。实际的服务不是由它们提供。而是由真正的服务商提供。通过这...
- Java反射机制与Spring动态代理深度解析
-
一、Java反射机制原理剖析1.1反射的本质与实现基础Java反射(Reflection)是Java语言的核心特性,允许程序在运行时:动态加载类获取类结构元数据操作类属性和方法关键技术支撑:java...
- Java 代理模式详解(java代理原理)
-
1.代理模式代理模式是一种比较好理解的设计模式。简单来说就是我们使用代理对象来代替对真实对象(realobject)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象...
- SpringBoot全局异常处理:如何优雅应对多系统多格式错误响应需求
-
SpringBoot全局异常处理:如何优雅应对多系统多格式错误响应需求引言部分在微服务架构中,你是否曾为处理不同外部系统的异常响应而头痛?A系统要求返回JSON格式的:{code:1001,mes...
- 3分钟吃透代理技术!(代理一般都是怎么做)
-
最近有学员问了我一些问题,什么是代理,又该在什么地方使用。结合之前的讨论,这篇文章我们一起细致的讲解一下关于代理的一些问题。在Java中,代理通常分为两类:静态代理动态代理两者技术实现是不一样的,...
- 苏州网络维护 | 学习网络维护,从哪入手
-
我们想要学习网络维护,从哪入手呢?先带大家了解下网络维护1.培养基础知识:建立对计算机网络基本原理的理解。学习计算机网络的基础概念,如IP地址、子网掩码、路由器、交换机、协议等。2.学习网络技术:深入...
- CAD如何快速一键编号?(cad如何一次性全部编号)
-
cad一键自动编号。·第一步,在命令行数abh空格。·第二步,打开自动编号对话框,选择用默认的图言编号,编号文字的高度根据图纸的大小设置零点八。当然如果图纸很大,设置比如十一百的有可能数字编号,这点很...
- 职场新人必知的10个高效工作法,助你快速升职加薪
-
初入职场,面对繁杂的工作任务和陌生的职场环境,如何才能快速适应并脱颖而出?以下是10个高效工作法,帮助职场新人提升工作效率,快速实现升职加薪的目标。---1.制定每日工作计划-推荐理由:每天开始...
- 《魔导英雄传说》新手攻略,快速升级,礼包码,最强阵容排列
-
《魔导英雄传说》新手攻略一、武将培养指南英雄选择与培养:英雄品质分为SSR、SR、A,优先培养SSR英雄,如张飞、孙尚香等核心英雄阵营搭配:同阵营上阵英雄越多,战力加成越高,建议优先培养同一阵营的英雄...
- 一周热门
- 最近发表
- 标签列表
-
- copy命令 (86)
- 电脑基本常识 (77)
- 客户端身份校验失败 (83)
- 算法导论 (92)
- 图片放大 (80)
- ftp服务器怎么用 (81)
- 使用通配符 (81)
- 蜂鸣器程序 (76)
- 工厂方法模式 (76)
- resultsetmetadata (78)
- 开机运行命令 (82)
- node js安装linux (81)
- out of memory是什么意思 (85)
- shellexecuteinfo (75)
- dos常用命令 (82)
- 单元测试 (77)
- txt文本编辑器 (81)
- c语言从入门到精通 (80)
- 批量修改图片大小 (94)
- raid1 (82)
- beanutils copyproperties (80)
- 443端口 (79)
- nullreferenceexception (97)
- eclipse下载 (89)
- coreldraw视频教程 (77)