面向对象【上】

一.类

1.类:指一类事物,不能具体指哪种事物的一个抽象概念

2.类的定义格式:

    class 类名 {

             属性(变量);

             行为(方法);

      }

(class 是关键字,小写,用来定义类)

 

(命名规则:类名只能是字母,数字,下划线及$;不能以数字开头

   命名约定:类名每个单词首字母大写【驼峰式】,变量名全部小写字母)

 

(尽量使用有意义的英文单词,实在不行用拼音,不要用中文)

3.属性:也叫成员变量,组成类的一部分,主要用于描述类的状态

   方法:也叫成员方法,主要用于描述类的动作

Person 是类名,age 是成员变量,speak()是成员方法。在成员方法 speak()中可以直 接访问成员变量 age。

 

4.对象:对象是具体事物,是实实在在的

对象的创建与使用:

Java 程序中可以使用 new 关键字来创建对象

格式:类名 对象名【对象名实际上是变量名 】= new 类名();

例如:Person p = new Person();

 

通过对象调用方法,使用.(例:p通过.调用speak)

 年龄为0岁的原因:

                                             引用数据类型的变量都是存地址值的

5.当对象被实例化后,在程序中可以通过对象的引用变量来访问该对象的成员,但当没有任何变量引用这个对象时,它将成为垃圾对象,不能再被使用,会被系统自动回收。

列子:若不想引用,可让p指向空指针null,则0x0031会被回收

 

 6.类和对象的关系

➢ 对象是类的实例,类是对象的模板。

➢ 类是抽象的,对象是具体的。

颜色,乘坐人数这些属性是在模板上定义好的,细化到对象后,又在这些属性上有了差异

 

二.封装

1.定义:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

(方法(函数)本身就是一种封装表现形式;类本身也是一种封装的表现形式。)

2.封装好处:

➢ 将变化隔离;

➢ 便于使用;

➢ 提高重用性;

➢ 提高安全性。

3.封装原则:

➢ 将不需要对外提供的内容都隐藏起来;

➢ 把属性都隐藏,提供公共方法对其访问。

4.例子:

当调用者进行了错误的赋值可以怎样解决:

为了不让调用者对变量随便赋值,定义Person类的时候把age属性对外隐藏起来(用到了访问修饰符),如下图

这样就可以使属性age在类的外面不能被访问

这时,test01里age出现了报错,(不能直接访问age了)

 

这时要想给属性age进行赋值,可以提供公共的访问方法对其访问

[方法一]:设置age的值

在Person.java里:

在PersonTest01.java里:用下面方法即可调用age

这里的20是调用setAge方法时调用的实际参数,20传给了Person.java的变量a

以上依然可以赋值非法字符,如果想要解决这个问题可以这样做:

这样就可以排除非法字符了

 

!如何获取age的值:

 

上面方法可以获取age的值

(2)在Person.java里,空白处点击右键

 

重点:this关键字

this开头的指的是成员变量的属性,后面的age是局部变量(即为列子里的20)

 

三.访问修饰符

 

四.构造方法

构造方法:构建创造对象时调用的方法(函数)

(1)特点:

➢ 方法名类名相同,一模一样

➢ 不用定义返回值类型,不是无返回值类型 void,而是根本没有返回值

 ➢ 不可以使用 return 语句返回一个值,但是可以单独写 return 语句来作为方法的结束

(2)作用 可以给对象进行初始化。

(3)注意 :

➢ 默认构造方法的特点(注意)

➢ 多个构造方法是以重载(一个类里面有多个同名的方法)的形式存在的

【重载方法间的区别:(1)参数列表不同

      (2)多个构造方法也可以重载:

 

注意:一个类没有定义构造方法时,java虚拟机会自动的添加一个无参数的构造方法,这个方法没有参数,方法体里也没有任何代码;如果定义了构造方法则系统不会再自动添加构造方法

 

这个方法里面可以用return,但不能加其他任何东西

 

对象一建立就会调用与之对应的构造方法,用来给对象进行初始化

private 访问修饰符,构造方法私有化,则在其他类中没法使用new+构造方法的形式来构造对象了,无参的构造方法不能初始化对象的属性

 

一旦定义了一个构造方法(不管有参无参),系统就不会再自动给你添加无参数 的构造方法了,即使你没定义无参数的构造方法。

 

(4)构造方法和一般方法的区别:

➢ 写法上不同:一般方法标识符首字母小写,构造方法和类名一模一样,首字母大写;

                      构造方法不要返回值,定义构造方法是前面不要有任何返回值类型,也不要无返回值类型(void);

➢ 运行上的不同:构造方法是在对象一建立就会运行,用于给对象初试化;而一般方法是对象调用才执行, 是给对象添加具备的功能。

                         一个对象建立,构造方法只运行一次;而一般方法可以被该对象多次调用。

 

(5).构造方法和 set 方法的区别:

我们之前为了保护 age 属性,我们把他们定义成 private 的,然后设计了 set/get 方法对外 提供访问,构造方法可以给 age 设置初始值,setAge()方法也可以给 age 设置值,setXXX()方法是一般方法,可以被对象多次调用,可以多次修改 age 属性,而构造 方法是在对象创建时调用,对于一个对象只能调用一次,多次调用构造方法就说明创建了多个对 象。

                      

 

6.构造方法注意事项:

在构造方法前面加上 void

 

void Person() { }

 

可以加void ,语法编译没有错误,但是这时Person()方法不再是构造方法,已变为一般方法。因为构造方法没有返回值,不用定义返回值类型。

 

五.关键字

(一)this关键字

如果不用this时,上图红框位置就会有冲突,等号后面的age是形参(局部变量),优先级高于全局变量所以可以覆盖全局变量

所以要在全局变量前加上this.

 

哪个对象调用this所在的方法,this就代表哪个对象

谁调用这个例子里的setAge(this所在方法),this就代表哪个对象

这个例子里的this就是代指的p,因为不知道未来是什么名字的变量,所以用this代替

2.this的应用

(1)年龄比较:(this代表本类对象)

运用上面定义的方法比较p1和p3的年龄:p1调用方法和p3比较(此处含有this的方法被p1调用,所以this代表p1)

(2)this在构造方法间的调用

1  this在一个构造方法里调用另一个构造方法,一定要在这个构造方法的开头(第一行)进行调用

2  小括号里写哪个方法名就调用哪个构造方法

3  构造方法间不能互相调用(你调用我,我调用你),也不能自己调用自己

 

(二)static关键字

1.当每个对象某个属性值都相同时,前面加上static,这个属性就变成了静态,不会在每个对象内存区域内单独保存,java虚拟机会统一保存一个

2.static 是什么意思?具有什么意义?

静态,用来修饰成员(变量、方法)。被 static 修饰的成员独立于该类的任何对象。也就是 说,它不依赖类特定的实例,被类的所有实例共享。

posted @   莯梵  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
https://blog-static.cnblogs.com/files/xiaokang01/js.js 这是添加的文件的链接 color="240,230,140" 粒子的颜色设置 opacity="1" 粒子的透明度 count="75" 粒子的个数 https://blog-static.cnblogs.com/files/xiaokang01/js.js 这是添加的文件的链接 color="240,230,140" 粒子的颜色设置 opacity="1" 粒子的透明度 count="75" 粒子的个数
点击右上角即可分享
微信分享提示