【Java学习笔记(一百二十六)】面向对象(一)之类与对象的构成

本文介绍了面向对象编程的基本概念,对比了POP(面向过程)和OOP(面向对象)的区别,强调了OOP的封装、继承和多态三大特性。接着详细阐述了类与对象的关系,包括类的成员构成、对象的创建与访问、匿名对象的使用,以及成员属性和方法的定义。此外,还讲解了构造器的作用和注意事项,强调了方法的重载、可变个数形参以及参数传递的方式。
摘要由CSDN通过智能技术生成

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一、面向对象

(一)POP与OOP

        所谓的POP指的是:Procedure Oriented Programming(面向过程)

        所谓的OOP指的是:Object Oriented Programming(面向对象)

        面向过程,强调的是过程的功能行为,以函数为最小单位,只考虑怎样完成这个过程;

        面向对象,强调的是构建具备功能的对象,以类/对象为最小单位,考虑的是谁来完成这个过程,更加符合人类在日常生活中的思维习惯,包括抽象、分类、继承、聚合、多态等;


(二)面向对象的三大特征

        封装、继承、多态


二、类与对象

(一)概述

        类是对一类事物的描述,是抽象的概念;

        对象时实际存在的每类事物的个体,因此也称为实例;

        面向对象的程序设计的重点就是类的设计;


(二)类的成员构成

        一个类中的成员构成包括:类的成员变量、类的构造器、成员方法、代码块、内部类;
在这里插入图片描述

        通常在定义类时,需要考虑类的修饰符、类名,如public修饰符表示公开的类,private修饰符表示私有的类。

(三)对象

        在定义了类后,即可通过类的实例化创建类的对象,使用new来创建类的实例对象,并通过“对象名.对象成员”的方式访问对象成员,其中包括属性和方法。

        当对象生成后,如数组一样在栈空间中入栈对象的地址,而在堆空间中分配对象的内存空间,与数组的内存空间分配类似。


(四)匿名对象

        所谓匿名对象即不定义对象的句柄,直接调用该对象的方法等,如下所示:

new Person().eat();

        这种匿名对象多用于单次方法的调用,或是作为一个实参传递给方法调用。


(五)成员属性

1.声明格式

        一个类中总会定义一些类的成员属性变量,用以描述该类的相关信息,在定义类的成员属性变量时,要遵循一定的规则,采用如下所示的方式定义属性变量:

修饰符 数据类型 属性名 = 初始化值;

2.修饰符

        其中,初始化值可以省略不写。常见的修饰符包括权限修饰符,如private、缺省、protected、public;以及其他修饰符,如static、final等。权限修饰符能够限制该成员属性变量在各个类中的可见性,有效地保护类中的数据信息。

public class Person{
	private int age; // 声明private变量 age
	public String name =Lila; //声明public变量 name
}

3.属性变量的分类

        对于类中的属性变量,有多种的分类方式,也会产生多种变量名称,这些我们都需要牢记于心。首先从整体上看,变量一定不会脱离类而独立存在,在类中变量分为成员变量与局部变量。所谓的成员变量指的是在类体内直接声明的变量,而局部变量则包括在方法、构造器内定义的形参,方法内定义的变量以及代码块内定义的变量。

        对于类中的成员变量又分为实例变量与类变量,所谓的实例变量指的是不用static修饰的变量, 即不是static静态变量,只能通过对象进行访问;而类变量,即使用static进行修饰,可以直接通过类名进行访问。以下是成员变量与局部变量之间的差别:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1cj5x7Bx-1659007982949)(C:\Users\Mr.wmxx\AppData\Roaming\Typora\typora-user-images\image-20220727164624000.png)]

(六)成员方法

        类中的方法时类或对象行为的抽象,用以完成某个功能,因此将该种功能封装为一个可以重复调用的方法。

1.声明格式

        成员方法的声明格式如下所示,与普通方法类似:

修饰符  返回值类型  方法名 ( 参数类型 形参1,  参数类型 形参2,. ){
	方法体程序代码
	return  返回值;

        其中修饰符也包括权限修饰符、static、final等,要注意的是return在无返回值时也可以使用表示结束方法,在return之后就不能写任何的表达式了。其余格式较为简单,因此无需进行描述。

2.方法重载

        在一个类中,可以声明多个同名方法,但也需要保证这些方法的参数格式或者参数类型不相同,注意方法的重载与方法的返回值类型无关,只关注参数列表的不同。如下所示:

//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}

        我们最常用的输出语句System.out.println()就是典型的重载方法,如下所示:

public void println(byte x)
public void println(short x)
public void println(int x)

        注意,当两个方法的参数列表中的多个参数类型相同,但是相同类型的形参位置不同时,也会构成方法的重载,如下所示:

void show(int x,char y,double z){}
int show(int a,double c,char b){}

3.可变个数的形参

        从JDK5.0开始提供了Varargs机制,允许直接定义能和多个实参相匹配的形参,来更加简单地传递个数可变的实参。如下所示,同时传入多个同一类型的变量:

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

        可以看到的是,数组也可以发挥同样的作用,其实可变形参就是传入了一个数组形参,因此数组形参与可变形参之间是不能重载的!!!

        同时要注意的是,当方法的参数中存在可变形参时,需要将可变形参放在形参声明的最后位置,不然的话由于可变形参的数量是不确定的,编译器难以区分!在一个方法的形参位置,最多只能声明一个可变形参。

4.方法参数的值传递

        Java中方法的参数传递方式为值传递,即将实际参数值的副本传给形参,对于形参是基本数据类型的,将实参基本数据类型变量的“数据值”传递给形参;对于形参是引用数据类型的,将实参引用数据类型变量的“地址值”传递给形参。

(七)构造器

        构造器的作用是创建对象,为对象进行初始化,它具有与类相同的名称,且不声明返回值类型,不能被static、final、synchronized、abstract、native等修饰符修饰,不能带有return语句返回值。

1.语法格式
修饰符 类名 (参数列表) {
	初始化语句;
}

        构造器与当前类的名称相同,修饰符可以采用常见的权限修饰符,如下所示:

public class Animal{private int age;public Animal(){

​		ages = 4;}

}

2.构造器注意事项

        在每个Java类中,至少都有一个构造器。构造器一般分为两类,一类是默认提供的隐式无参构造器,即使我们不显式定义类的构造器也会存在一个隐式的无参构造器,该默认构造器的修饰符与所属类的修饰符是一致的;另一类是显式定义的构造器,可以是有参或是无参的,一旦显式定义了构造器,则默认的无参构造器是不会提供的,需要显式地定义一个无参构造器

        每个类中可以重载多个有参构造器,可以供多种方式初始化类的对象,方便创建各种不同的对象,同时需要注意的是,子类是不能继承父类的构造器的,但可以调用父类的构造器方法。

        构造器的修饰符与所属类的修饰符是一致的**;另一类是显式定义的构造器,可以是有参或是无参的,一旦显式定义了构造器,则默认的无参构造器是不会提供的,需要显式地定义一个无参构造器

        每个类中可以重载多个有参构造器,可以供多种方式初始化类的对象,方便创建各种不同的对象,同时需要注意的是,子类是不能继承父类的构造器的,但可以调用父类的构造器方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值