疯狂JAVA讲义学习——基础代码练习——类&对象——构造器&成员变量---局部变量&方法—— 隐藏和封装
类是某一批对象的抽象,可以把类理解成某种概念;对象才是一个具体存在的实体。
Java语言是面向对象的程序设计语言,类和对象是面向对象的核心。Java语言提供了对创建类和创建对象简单的语法支持。
Java语言里定义类的简单语法如下:
修饰符可以是public、final、abstract,或者完全省略这三个修饰符。
类名只要是一个合法的标识符即可,建议Java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。
对一个类定义而言,可以包含三种最常见的成员:构造器、成员变量和方法。
static修饰的成员不能访问没有static修饰的成员。
成员变量用于定义该类或该类的实例所包含的状态数据;
方法则用于定义该类或该类的实例的行为特征或者功能实现。
构造器用于构造该类的实例,Java语言通过new关键字来调用构造器,从而返回该类的实例。
构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。
因此,Java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。
=========================================================
==========================================================
定义成员变量的语法格式如下:
➢ 修饰符:修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private三个最多只能出现其中之一,
也可以与static、final组合起来修饰成员变量。
➢ 类型:类型可以是Java语言允许的任何数据类型,包括基本类型和现在介绍的引用类型。
➢ 成员变量名:成员变量名只要是一个合法的标识符即可,建议成员变量名应该由一个或多个有意义的单词连缀而成,
第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。
➢ 默认值:定义成员变量还可以指定一个可选的默认值。
======================================================
=======================================================
定义方法的语法格式如下:
➢ 修饰符:修饰符可以省略,也可以是public、protected、private、static、final、abstract,其中public、protected、private三个最多只能出现其中之一;
abstract和final最多只能出现其中之一,它们可以与static组合起来修饰方法。
➢ 方法返回值类型:返回值类型可以是Java语言允许的任何数据类型,包括基本类型和引用类型;
如果声明了方法返回值类型,则方法体内必须有一个有效的return语句,该语句返回一个变量或一个表达式,这个变量或者表达式的类型必须与此处声明的类型匹
配。除此之外,如果一个方法没有返回值,则必须使用void来声明没有返回值。
➢ 方法名:方法名的命名规则与成员变量的命名规则基本相同,但由于方法用于描述该类或该类的实例的行为特征或功能实现,因此通常建议方法名以英文动词开头。
➢ 形参列表:形参列表用于定义该方法可以接受的参数,形参列表由零组到多组“参数类型 形参名”组合而成,多组参数之间以英文逗号(,)隔开,
形参类型和形参名之间以英文空格隔开。一旦在定义方法时指定了形参列表,则调用该方法时必须传入对应的参数值——谁调用方法,谁负责为形参赋值。
=========================================================
==========================================================
Static 是一个特殊的关键字,它可用于修饰方法、成员变量等成员。
Static 修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因为通常把Static 修饰的成员变量和方法也称为类变量、类方法。
不使用Static 修饰的普通方法、成员变量则属于该类的单个实例,而不属于该类。因为通常把不使用Static 修饰的成员变量和方法也称为实例变量和示例方法。
由于Static 直译为静态的意思,因此也把Static 修饰的成员变量和方法称为静态变量和静态方法;把不使用Static 修饰的成员变量和方法称之为非静态变量和非静态方法。
PS:静态成员不能访问非静态成员。
=========================================================
==========================================================
定义构造器的语法格式如下:
➢ 修饰符:修饰符可以省略,也可以是public、protected、private其中之一。
➢ 构造器名:构造器名必须和类名相同。
➢ 形参列表:和定义方法形参列表的格式完全相同
创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可创建这个类的实例。
========================================================================
========================================================================
有这样一行代码:Person p=new Person(); 这行代码创建了一个Person实例,也被称为Person对象,这个Person对象被赋给p变量。
在这行代码中实际产生了两个东西:一个是p变量,一个是Person对象。
=============================================================
==============================================================
Java提供了一个this关键字,this关键字总是指向调用该方法的对象。
根据this出现位置的不同,this作为对象的默认引用有两种情形:
➢ 构造器中引用该构造器正在初始化的对象。
➢ 在方法中引用调用该方法的对象。
this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或实例变量。
====================================================================
====================================================================
================================================================
=================================================================
方法详解
Java语言里,方法不能独立存在,方法必须属于类或对象。一旦将一个方法定义在某个类的类体内,如果这个方法使用了static修饰,则这个方法属于这个类,否则这个方法属于这个类的实例。
Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。
从JDK 1.5之后,Java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形参。如果在定义方法时,在最后一个形参的类型后增加三点(...),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。
注意:个数可变的形参只能处于形参列表的最后。一个方法中最多只能包含一个个数可变的形参。个数可变的形参本质就是一个数组类型的形参,因此调用包含个数可变形参的方法时,该个数可变的形参既可以传入多个参数,也可以传入一个数组。
一个方法体内调用它自身,被称为方法递归。只要一个方法的方法体实现中再次调用了方法本身,就是递归方法。递归一定要向已知方向递归。
如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。方法重载的要求就是两同一不同:同一个类中方法名相同,参数列表不同。至于方法的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。
========================================================
========================================================
成员变量和局部变量
成员变量指的是在类里定义的变量,也就是前面所介绍的field;局部变量指的是在方法里定义的变量。变量名称建议第一个单词首字母小写,后面每个单词首字母大写。
成员变量无须显式初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化。
局部变量除形参之外,都必须显式初始化。也就是说,必须先给方法局部变量和代码块局部变量指定初始值,否则不可以访问它们。
当系统加载类或创建该类的实例时,系统自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值。
局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。
这意味着定义局部变量后,系统并未为这个变量分配内存空间,直到等到程序为这个变量赋初始值时,系统才会为局部变量分配内存,并将初始值保存到这块内存中。
与成员变量不同,局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中。
如果局部变量是基本类型的变量,则直接把这个变量的值保存在该变量对应的内存中;
如果局部变量是一个引用类型的变量,则这个变量里存放的是地址,通过该地址引用到该变量实际引用的对象或数组。
栈内存中的变量无须系统垃圾回收,往往随方法或代码块的运行结束而结束。
===============================================================================
===============================================================================
深入构造器
构造器最大的用处就是在创建对象时执行初始化。
同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。
使用this调用另一个重载的构造器只能在构造器中使用,而且必须作为构造器执行体的第一条语句。
使用this调用重载的构造器时,系统会根据this后括号里的实参来调用形参列表与之对应的构造器。
=====================================================================
=====================================================================
隐藏和封装
封装实际上有两个方面的含义:把该隐藏的隐藏起来,把该暴露的暴露出来。这两个方面都需要通过使用Java提供的访问控制符来实现。
Java提供了3个访问控制符:private、protected和public,分别代表了3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,提供了4个访问控制级别。
Java的访问控制级别由小到大如图5.14所示:
关于访问控制符的使用,存在如下几条基本原则。
➢ 类里的绝大部分成员变量都应该使用private修饰,只有一些static修饰的、类似全局变量的成员变量,才可能考虑使用public修饰。
除此之外,有些方法只用于辅助实现该类的其他方法,这些方法被称为工具方法,工具方法也应该使用private修饰。
➢ 如果某个类主要用做其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不想被外界直接调用,则应该使用protected修饰这些方法。
➢ 希望暴露出来给其他类自由调用的方法应该使用public修饰。因此,类的构造器通过使用public修饰,从而允许在其他地方创建该类的实例。
因为外部类通常都希望被其他类自由使用,所以大部分外部类都使用public修饰。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-03-15 jmeter——参数化——正则表达式
2020-03-15 jmeter——参数化——CSV Data Set Config(csv文件以及txt文件)