前言
文章图片
马上就要过年了,支付宝集五福活动开始了。在这里送给他们一个福字,亲测可以扫出敬业福,祝大家集齐五福,分到多多的money。
一、面向对象程序设计?
面向对象程序设计简称 OO(Object Oriented Programming)对 Java 语言来说,万事万物皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。二、类和对象的概念 1、概念
【java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡】对象是用来描述客观事物的一个实体,由一组属性和方法构成。类 class 抽取对象的共同特征(属性和方法)构成类
例:我们现实中的小猫小狗都是一个对应,他们都有名字、身高、体重等属性,也会有吃饭睡觉等方法,所以说现实中的万事万物我们都可以看作是一个对象他们有自己的属性和方法。
属性: property field 对象具有的各种特征 — 名词
方法: method function 对象执行的操作, 行为 — 动词
类是模子,定义对象将会拥有的特征(属性)和行为(方法)
2、类和对象的区别
1、类的是抽象的,对象 是具体的3、定义一个类的步骤
2、类是共性 对象 个体
1、 类名 — Pascal 命名法4、使用对象的步骤
2、属性 – camel命名法 名词
3、方法 – camel命名法 动词
1、创建对象
类名 对象名 = new 类名();
2、引用对象成员:使用“.”进行以下操作5、属性and方法 5.1概念
引用类的属性:对象名.属性
引用类的方法:对象名.方法名()
- 属性: 也叫成员变量 如果没有初始值 ,那么会有一个默认值:
数值: 0
boolean : false
char: 空格
引用: null
5.2 方法的返回类型:
- 方法
组成
public int add(int a ,int b){
return a+b;
}
[修饰符 ] 返回类型 方法名([参数列表] ){
方法体;
}
1、 如果一个方法的返回类型是void 那么 这个方法可以没有返回值,如果有可以return; 但5.3方法的调用
后面不能有任何代码 ,void 在调用时,没有接收
2、 如果 一个方法返回类型不是void,那么方法必须要有返回值,且返回值是这个类型或比它小类型的值, 而且在调用 这个方法时,一般使用同类型的值进行接收处理
1、 同类之间的普通方法: 直接 方法名( [参数] ) 调用
2、 非同类或static 方法调用普通方法, 必须先new一个对象 ,然后使用 对象.方法名( [参数] )5.4成员变量和局部变量
1、作用域不同
成员变量 整个类有效 局部变量 只在本方法体有效
2、初始值不同
成员变量 有默认值
局部变量 没有默认值,使用前必须初始化
3、 优先级不同带参数的方法 分为2种
同名时,局部变量有更高的优先级
如果要访问成员变量,那么需要使用this.变量名访问
1、方法的形参6、方法重载 Overload
形式参数 : 指的是方法声明时所指定的参数 必须指明参数类型
2、方法的实参
实际参数: 指的是方法在调用时所传入的参数,必须是实际对应的值,不能加上类型
注: 多参数在声明和调用时, 参数 要 一 一 对应
数量 , 类型, 位置 要相同
和名字无关
1、 同一个类中,方法名相同,参数列表不同 就叫方法重载7、方法的重写 Override
2、 普通方法和构造方法都可重载
3、 与返回类型和修饰符无关
4、 参数列表不同指的是 数量, 类型,位置不同,和名字无关
1、 子类重写父类的方法8、this、super、static、final关键字 8.1、 关键字this
2、 方法名相同,参数列表也相同
3、 返回类型相同,或是父类返回类型的子类 <
4、 修饰符和父类相同,或比父类大 >
1、 修饰变量,指向成员变量8.2、关键字 super
2、修饰方法 指向成员方法
3、 修饰构造方法 调用同类的其他构造 方法,必须在第一行
1、 访问属性 指向父类成员变量8.3、关键字static
2、 访问方法 指向父类成员方法
3、 访问父类的构造方法 ,必须在第一行
1、修饰属性,变成类变量 可以直接使用类名.属性访问8.4、 关键字final
2、修饰方法,变成静态方法 可以直接使用类名.方法名( [参] ) 访问
3、修饰代码块, 变成静态代码块, 一般用来初始化
1、 修饰变量,变成常量 ,有且仅有一次赋值三、面向对象的三大核心特性 1、封装
2、 修饰方法 为最终方法,子类不能重写
3、 修饰类变成最终类 ,这个类就没有子类
封装是将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。它的目的是保护类中的信息,它可以阻止在外部定义的代码随意访问内部代码和数据。有助于建立各个系统之间的松耦合关系,提高系统的独立性。当一个系统的实现方式发生变化时,只要它的接口不变,就不会影响其他系统的使用。提高软件的复用率,降低成本。每个系统都是一个相对独立的整体,可以在不同的环境中得到使用。2、继承 2.1继承概念
Java 语言的基本封装单位是类。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问,这就可以确保不会发生不希望的事情
实现封装三步骤:
1、私有化属性
2、提供公有的setter getter
3、根据业务 加入控制
文章图片
文章图片
继承指的是子类继承父类的属性和方法(Java只支持单继承)2.2继承的优点:
小猫:属性(名字、年龄、身高)、属性(吃饭、睡觉、抓老鼠)
小狗:属性(名字、年龄、身高)、属性(吃饭、睡觉、看家)
小猫小狗都存在相同的数据和方法他们都有名字、年龄、身高、吃饭、睡觉等,我们就可以把这些内容抽取出来写成一个父类,让他们去继承这个父类从而获得父类中的这些属性和方法。
1.提高了代码的可复用性,比如我们升级一块软件,就是在原有的基础上去完善或者增加功能,而不用重新开发2.3继承的缺点:
2.提高了可维护性
4.继承是事项多态的前提
1.增强了类之间的耦合2.4 有继承关系的执行过程
2.软件开发的原则是高内聚,低耦合
父类属性–>父类构造方法 -->子类属性 --> 子类构造方法3、多态
面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。即同一个引用类型,使用不同的实例而执行不同操作 也就是 父类的引用指向子类的对象使用多态的思路 —实现多态的三个要素
1、子类继承父类四、抽象类
2、子类重写父类的方法
3、 声明时父类的引用指向子类的对象
- abstract 修饰类, 这个类就变成了抽象类, 抽象类不能实例化 不能new
- abstract 修饰方法, 变成抽象方法,
抽象方法没有方法体
抽象方法只能存在于抽象类中
子类必须重写父类的抽象方法,除非子类也是抽象类
public abstract class Aanmial {
public int loong;
public int width;
public Aanmial(int loong, int width) {
this.loong = loong;
this.width = width;
}public abstract double area();
}
子类1
public class a extends Aanmial {
public a(int loong, int width) {
super(loong, width);
}@Override
public double area() {
return loong * width;
}
}
子类2
public class b extends Aanmial {
public b(int loong, int width) {
super(loong, width);
}@Override
public double area() {
return loong/width;
}}
实现结果
文章图片
说明:我们在抽象类中定义了area()的抽象方法然后我们定义了两个子类来继承这个抽象类,在两个子类中分别重写的父类的area()方法并计算了不同的公式,于是编写了测试类进行测试,进而得到不同的结果。
五、总结 如果大家有什么问题,或者需要什么资源可以在下面评论或者留言。能帮助大家的我一定及时帮助,并提前祝福大家新年快乐。
推荐阅读
- python|学了这么久的Python,到底是什么水平(用这两个项目就能得到检验)
- 人工智能|名校硕士苦攻5年AI无论文痛苦吐槽,导师放养怎么办()
- Python数据可视化|python 数据可视化01
- 数据库|数据库(基础SQL)
- mysql|MYSQL数据库主从同步设置
- mysql|【MYSQL数据库】事件(定时器)和触发器
- java|【JAVA通天路】JDBC连接MYSQL数据库
- JAVA高并发程序设计|多线程关于无锁的线程是否安全问题
- JAVA高并发程序设计|六道热门多线程面试题,你学废了吗?