⭐️大一新生小何,还在学习当中,欢迎交流指正~
![]()
目录
面向对象(Oriented Object)
是相对于面向过程而言的,过程其实就是函数,对象是将函数和属性进行了封装。
(1)将复杂的事情简单化。
(2)面向对象将以前的过程中的执行者,变成了指挥者。
(3)面向对象思想是符合人们思考习惯的一种思想。
面向对象和面向过程区别
面向过程:事物比较简单,可以用线性的思维去解决。
面向对象:事物比较复杂,使用简单的线性思维无法解决。
共同点:都是解决实际问题的一种思维方式。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理。
二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,面向对象,强调了具备功能的对象,以类/对象为最小单位,考虑谁来做。
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
面向对象的三大特征
封装
继承
多态
面向对象的思想概述
类(Class)和对象(Object)是面向对象的核心概念。
➢类是对一类事物的描述,是抽象的、概念上的定义
➢对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。
“万事万物皆对象”
对象
接收消息的实体,一切皆为对象,对象都有属性和行为,对象都属于某个类,每个对象都是独一无二的
类
创建对象的蓝图和模板
类的属性:数据抽象
类的方法:行为抽象
构造器(构造方法)
这里放一张图片便于理解
接口
抽象方法的集合
(1)作用:
能力,实现一个接口就代表具备了某方面的能力。
约定,一个类实现了接口就必须实现接口中的所有抽象方法否则要被声明为抽象类。
角色,一个类可以实现多个接口来扮演多种角色
(2)接口之间可以继承而且支持多重继承
(3)从Java 8开始接口中的方法允许有默认实现
(4)常见的接口用法
单方法接口(函数式接口):Lambda表达式
标识性接口
普通接口
常量接口(接口最不正确的用法)
类和对象的使用(面向对象思想落地的实现)
1.创建类,设计类的成员
2.创建类的对象
3.通过“对象.属性或“对象.方法”调用对象的结构
//测试类
public class PersonTest {
public static void main(String[] args) {
//2. 创建Person类的对象
Person p1 = new Person( );
//Scanner scanner = new Scanner(System.in) ;
//调用对象的结构:属性、方法
//调用属性:“对象.属性”
p1.name = "Tom";
p1.isMale = true;
System. out . println(p1. name) ;
//调用方法:“对象.方法”
p1.eat( );
p1.sleep( ) ;
p1. talk("Chinese") ;
}
}
class person{
//属性
String name;
int age = 1;
boolean isMale;
}
注意:如果创建了一个类的多个对象,则每个对象都独立的拥有一 套类的属性。 (非static的)
意味着,如果我们修改一一个对象的属性a,则不影响另外一个对象属性a的值。
类中属性的使用
属性(成员变量) VS局部变量
1. 相同点:
1.1 定义变量的格式工数据类型变量名=变量值
1.2 先声明,后使用
1.3 变量都有其对应的作用域
2. 不同点:
2.1 在类中声明的位置的不同
属性 : 直接定义在类的一对{ }内
局部变量 : 声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
2.2 关于权限修饰符的不同
属性 : 可以在声明属性时,指明其权限,使用权限修饰符。
常用的权限修饰符: private、public、缺省、protected--->封装性
局部变量:不可以使用权限修饰符。
默认初始化值的情况
属性 : 类的属性,根据其类型,都有默认初始化值。
整型(byte、short、int、long) :0
浮点型(float、double) : 0.0
字符型(char) : 0 (或'\u0000 ' )
布尔型(boolean) : false
引用数据类型(类、数组,接口 : null);
局部变量:没有默认初始化值。
意味着,我们在调用局部变量之前,一定要显式赋值。
特别地:形参在调用时,我们赋值即可
在内存中加载的位置
属性:加载到堆空间中(非static)
局部变量:加载到栈空间
方法
描述类应该具有的功能。
比如: Math类: sqrt( ) \random( ) \. . .
Scanner类: nextXxx( )...
Arrays类: sort() \ binarySearch( ) \...
方法的分类:
方法的声明
权限修饰符 返回值类型 方法名(形参列表){
方法体
}
说明:
关于权限修饰符:默认方法的权限修饰符先都使用public
Java规定的4种权限修饰符: private、public、缺省、protected -- >封装性
返回值类型:有返回值vs没有返回值
如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用
return关键字来返回指定类型的变量或常量。
注意 :方法的使用中,可以调用当前类的属性或方法
特殊的:方法A中又调用了方法A:递归方法、
方法中,不可以定义方法。
返回值类型
有返回值vs没有返回值
如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用
return关键字来返回指定类型的变量或常量: return 数据”。
如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就
使用return.但是,如果使用的话,只能return;”表示结束此方法的意思。
return关键字的使用
1.使用范围:使用在方法体中
2.作用:
①结束方法
②针对于有返回值类型的方法,使用"return数据"方法返回所要的数据。
3.注意点: return关键字后面不可以声明执行语句。
局部变量和成员变量的区别
(1)成员变量直接定义在类中。
局部变量定义在方法中,参数上,语句中。
(2)成员变量在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
(3)成员变量定义在堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放
构造代码块和构造函数的区别
构造代码块:是给所有的对象进行初始化 ,只要对象一建立就会调用这个代码块。
构造函数:是给与之对应的对象进行初始化。
构造函数
用于给对象进行初始化 ,函数中的一种。构造函数是在对象创建时被调用的,而且 初始化动作只执行一次 。
特点:该函数的名称和所在类的名称相同。不需要指定返回值类型。该函数没有具体的返回值。
注意:在定义一个类的时候,如果没有定义一个构造函数,系统会自动生成一个无参构造函数,以便于该类对象的创建和初始化。如果类中自定了构造函数,那么默认的构造函数没有了。如果一个类中有多个构造函数,这些构造函数是以重载体现的。
一起加油冲冲冲!