首页 > 其他分享 >03、面向对象

03、面向对象

时间:2024-06-02 15:56:27浏览次数:26  
标签:03 形参 对象 修饰符 面向对象 点击 参数 方法

1、面向对象三条主线
Java类及类的成员
	字段、方法、构造器、代码块。内部类
面向对象的三大特征
	封装、继承、多态
其它关键字
	this、package、import、super、static、final、interface
2、面向过程与面向对象
面向过程(POP)
	面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做
面相对象(OOP)
	面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做
	类(Class)和对象(Object)是面向对象的核心概念
	类是对一类事物的描述,是抽象的、概念上的定义
	对象是实际存在的该类事物的每个个体,因而也称为实例(instance)
	面向对象程序设计的重点是类的设计
	类的设计,其实就是类的成员的设计
3、类
语法格式
	修饰符 class 类名 {
	    类的成员
	}
自定义类的步骤
	定义类(考虑修饰符、类名)
	编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
	编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
类的访问机制
	一个类中:类中的方法可以直接访问类中的成员变量
	不同类中:先创建要访问类的对象,再用对象访问类中定义的成员
4、对象
如何使用Java类
	java类的实例化,即创建类的对象
创建语法
	类名 对象名 = new 类名()
使用
	“对象名.对象成员”的方式访问对象成员(包括属性和方法)
匿名对象
	不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象
	new Person().shout();
	使用情况
		如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象
		将匿名对象作为实参传递给一个方法调用
5、类的成员之一:属性(field)
语法格式
	修饰符 数据类型 属性名 = 初始化值
初始化值:对象的属性有默认值
	byte、short、int:0
	long:0L
	float:0.0f
	double:0.0
	char:0或\u0000
	boolean:false
	引用类型:null
6、类的成员之二:方法(method)
方法概述
	方法是类或对象行为特征的抽象,用来完成某个功能操作
	将功能封装为方法的目的是,可以实现代码重用,简化代码
	Java里的方法不能独立存在,所有的方法必须定义在类里
方法声明格式
	修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){
	    方法体程序代码
	    return 返回值;
	}
注
	方法通过方法名被调用,且只有被调用才会执行
	方法被调用一次,就会执行一次
	没有具体返回值的情况,返回值类型用关键字void表示,那么方法体中可以不必使用return语句。如果使用,仅用来结束方法
	定义方法时,方法的结果应该返回给调用者,交由调用者处理
	方法中只能调用方法或属性,不可以在方法内部定义方法
7、方法的重载(overload)
定义
	在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
特点
	与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别
8、可变个数形参
JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹配的形参

JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量
	public static void test(int a ,String[] books);
JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量
	public static void test(int a ,String…books);

注
	声明格式:方法名(参数的类型名 ...参数名)
	可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个
	可变个数形参的方法与同名的方法之间,彼此构成重载
	可变参数方法的使用与方法参数部分使用数组是一致的
	方法的参数部分有可变形参,需要放在形参声明的最后
	在一个方法的形参位置,最多只能声明一个可变个数形参
9、方法的参数传递机制
形参:方法声明时的参数
实参:方法调用时实际传给形参的参数值

Java的实参值如何传入
	Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响
	形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参
	形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参
10、面向对象特征之一:封装
封装概述
	程序设计追求“高内聚,低耦合”
	高内聚 :类的内部数据操作细节自己完成,不允许外部干涉
	低耦合 :仅对外暴露少量的方法用于使用
	封装就是隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想封装使用
	合理隐藏、合理暴露
封装实现
	Java中通过将数据声明为私有的(private),再提供公共(public)方法:getXxx()和setXxx()实现对该属性的操作
11、四种权限修饰符
private
	类内部
缺省
	类内部、同一个包
protected
	类内部、同一个包、不同包的子类
public
	类内部、同一个包、不同包的子类、同一个工程
注
	对于class的权限修饰只可以用public和default(缺省)
12、类的成员之三:构造器(构造方法)
特征
	它具有与类相同的名称
	它不声明返回值类型。(与声明为void不同)
	不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
作用
	创建对象;给对象进行初始化
语法格式
	修饰符 类名 (参数列表) {
	    初始化语句;
	}
分类:根据参数不同
	隐式无参构造器(系统默认提供)
	显式定义一个或多个构造器(无参、有参)
注
	Java语言中,每个类都至少有一个构造器
	默认构造器的修饰符与所属类的修饰符一致
	一旦显式定义了构造器,则系统不再提供默认构造器
	一个类可以创建多个重载的构造器
	父类的构造器不可被子类继承
13、JavaBean
定义:JavaBean是一种Java语言写成的可重用组件。即一种符合标准的Java类
标准
	类是公共的
	有一个无参的公共的构造器
	有属性,且有对应的get、set方法
14、关键字:this

15、关键字:package、import

16、MVC设计模式

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

点击查看代码

补充
局部变量与成员变量区别
	
方法使用方式
	
属性赋值过程
	默认初始化
	显式初始化
	构造器中初始化
	通过对象.属性/对象.方法进行初始化

标签:03,形参,对象,修饰符,面向对象,点击,参数,方法
From: https://www.cnblogs.com/Zhao-Chen/p/18226836

相关文章

  • 为什么GD32F303代码运行在flash比sram更快?
    我们知道一般MCU的flash有等待周期,随主频提升需要插入flash读取的等待周期,以stm32f103为例,主频在72M时需要插入2个等待周期,故而代码效率无法达到最大时钟频率。所以STM32F103将代码加载到sram运行速度更快。但使用GD32F303时将代码加载到SRAM后速度反而下降了一些,这是为什么......
  • 【GD32F303红枫派使用手册】第六节 PMU-低功耗实验
    6.1实验内容通过本实验主要学习以下内容:PMU原理;低功耗的进入以及退出操作;6.2实验原理6.2.1PMU结构原理PMU即电源管理单元,其内部结构下图所示,由该图可知,GD32F303系列MCU具有三个电源域,包括VDD/VDDA电源域、1.2V电源域以及电池备份域,其中,VDD/VDDA域由电源直接供电。在......
  • Exercise 03
    Exercise03Exercise03Supposeyouareusing1webmailtowriteamessagetoafriendofyours.Youtypeupthemessageinyourweb2browserandhitSendsowhereitgo?Afteryouhitthe3sendbuttonyourwebbrowser4transfersyourmessaget......
  • Unity2D游戏制作入门 | 03
    ​上期链接:Unity2D游戏制作入门|02这节的规则瓦片其实是上一节用Tile去绘制地图的补充吧,假设你有大量而且面积还挺大的地图工程量,我想画的时间还是很久的,规则瓦片就是为了解决这种问题。所以所谓规则瓦片就是有一部分地方是固定绘制的,然后有一些地方是随机出现的素材(比......
  • 100311. 无需开会的工作日
    100311.无需开会的工作日 已解答中等 给你一个正整数 days,表示员工可工作的总天数(从第1天开始)。另给你一个二维数组 meetings,长度为 n,其中 meetings[i]=[start_i,end_i] 表示第 i 次会议的开始和结束天数(包含首尾)。返回员工可工作且没有安排会议的天......
  • 红米AX6000 Openwrt FIP 没权限 Can't open device for writing!
     ......
  • (7-4-03)反馈控制与系统稳定性:四轴飞行器仿真与控制系统(2)四轴飞行器的环境模拟(3)
    (9)reset(self,det_state=None):用于初始化环境的状态,可以选择指定明确的初始状态(det_state),否则将生成一个随机状态。返回初始状态和对应的零控制动作。defreset(self,det_state=None):state=[]action=[]self.action_hist=[]......
  • 某讯tz103s_v1.4改串、开adb、去控
    方案记录如下,使用后果自负!如果有人0.9都逃费,甚至拿出去倒卖的话,我只能说...格局小了!提前说明:这款棒子频段不全且为板载wifi天线,不推荐作为主力使用,但没有限速、微信直充、套餐真香~这里介绍的是不需要编程器的玩法改串:先登录,访问这个链接,进入工厂模式。打开AT端口,不出意料电......
  • python画图报错:OSError: 'seaborn-whitegrid' is not a valid package style
    解决方法:https://stackoverflow.com/questions/78019854/matplotlib-seaborn-whitegrid-is-not-a-valid-package-style?newreg=7ee17d6cd10c4182b08284391596644b代码:importmatplotlib.pyplotaspltplt.style.available效果:这个问题说明对应的样式package不存在,查......
  • 【问题解决】MySQL恢复数据库报错Unknown command '\''.
    问题使用以下命令备份恢复数据库,恢复失败提示ERRORatline39595:Unknowncommand'\''.#备份数据库mysqldump-uusername-p--no-create-db-Rdatabasename>dump.sql#恢复数据库mysql-uusername-pdatabasename2<dump.sql问题原因及解法原因:中文字符的问题......