java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡

前言 java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡
文章图片

马上就要过年了,支付宝集五福活动开始了。在这里送给他们一个福字,亲测可以扫出敬业福,祝大家集齐五福,分到多多的money。
一、面向对象程序设计?

面向对象程序设计简称 OO(Object Oriented Programming)对 Java 语言来说,万事万物皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。
二、类和对象的概念 1、概念
【java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡】对象是用来描述客观事物的一个实体,由一组属性和方法构成。
例:我们现实中的小猫小狗都是一个对应,他们都有名字、身高、体重等属性,也会有吃饭睡觉等方法,所以说现实中的万事万物我们都可以看作是一个对象他们有自己的属性和方法。
属性: property field 对象具有的各种特征 — 名词
方法: method function 对象执行的操作, 行为 — 动词
类 class 抽取对象的共同特征(属性和方法)构成类
类是模子,定义对象将会拥有的特征(属性)和行为(方法)
2、类和对象的区别
1、类的是抽象的,对象 是具体的
2、类是共性 对象 个体
3、定义一个类的步骤
1、 类名 — Pascal 命名法
2、属性 – camel命名法 名词
3、方法 – camel命名法 动词
4、使用对象的步骤
1、创建对象
类名 对象名 = new 类名();
2、引用对象成员:使用“.”进行以下操作
引用类的属性:对象名.属性
引用类的方法:对象名.方法名()
5、属性and方法 5.1概念
  1. 属性: 也叫成员变量 如果没有初始值 ,那么会有一个默认值:
    数值: 0
    boolean : false
    char: 空格
    引用: null
  1. 方法
    组成
    public int add(int a ,int b){
    return a+b;
    }
    [修饰符 ] 返回类型 方法名([参数列表] ){
    方法体;
    }
5.2 方法的返回类型:
1、 如果一个方法的返回类型是void 那么 这个方法可以没有返回值,如果有可以return; 但
后面不能有任何代码 ,void 在调用时,没有接收
2、 如果 一个方法返回类型不是void,那么方法必须要有返回值,且返回值是这个类型或比它小类型的值, 而且在调用 这个方法时,一般使用同类型的值进行接收处理
5.3方法的调用
1、 同类之间的普通方法: 直接 方法名( [参数] ) 调用
2、 非同类或static 方法调用普通方法, 必须先new一个对象 ,然后使用 对象.方法名( [参数] )
5.4成员变量和局部变量
1、作用域不同
成员变量 整个类有效 局部变量 只在本方法体有效
2、初始值不同
成员变量 有默认值
局部变量 没有默认值,使用前必须初始化
3、 优先级不同
同名时,局部变量有更高的优先级
如果要访问成员变量,那么需要使用this.变量名访问
带参数的方法 分为2种
1、方法的形参
形式参数 : 指的是方法声明时所指定的参数 必须指明参数类型
2、方法的实参
实际参数: 指的是方法在调用时所传入的参数,必须是实际对应的值,不能加上类型
注: 多参数在声明和调用时, 参数 要 一 一 对应
数量 , 类型, 位置 要相同
和名字无关

6、方法重载 Overload
1、 同一个类中,方法名相同,参数列表不同 就叫方法重载
2、 普通方法和构造方法都可重载
3、 与返回类型和修饰符无关
4、 参数列表不同指的是 数量, 类型,位置不同,和名字无关
7、方法的重写 Override
1、 子类重写父类的方法
2、 方法名相同,参数列表也相同
3、 返回类型相同,或是父类返回类型的子类 <
4、 修饰符和父类相同,或比父类大 >
8、this、super、static、final关键字 8.1、 关键字this
1、 修饰变量,指向成员变量
2、修饰方法 指向成员方法
3、 修饰构造方法 调用同类的其他构造 方法,必须在第一行
8.2、关键字 super
1、 访问属性 指向父类成员变量
2、 访问方法 指向父类成员方法
3、 访问父类的构造方法 ,必须在第一行
8.3、关键字static
1、修饰属性,变成类变量 可以直接使用类名.属性访问
2、修饰方法,变成静态方法 可以直接使用类名.方法名( [参] ) 访问
3、修饰代码块, 变成静态代码块, 一般用来初始化
8.4、 关键字final
1、 修饰变量,变成常量 ,有且仅有一次赋值
2、 修饰方法 为最终方法,子类不能重写
3、 修饰类变成最终类 ,这个类就没有子类
三、面向对象的三大核心特性 1、封装
封装是将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。它的目的是保护类中的信息,它可以阻止在外部定义的代码随意访问内部代码和数据。有助于建立各个系统之间的松耦合关系,提高系统的独立性。当一个系统的实现方式发生变化时,只要它的接口不变,就不会影响其他系统的使用。提高软件的复用率,降低成本。每个系统都是一个相对独立的整体,可以在不同的环境中得到使用。
Java 语言的基本封装单位是类。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问,这就可以确保不会发生不希望的事情
实现封装三步骤:
1、私有化属性
2、提供公有的setter getter
3、根据业务 加入控制
2、继承 2.1继承概念
java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡
文章图片
java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡
文章图片

继承指的是子类继承父类的属性和方法(Java只支持单继承)
小猫:属性(名字、年龄、身高)、属性(吃饭、睡觉、抓老鼠)
小狗:属性(名字、年龄、身高)、属性(吃饭、睡觉、看家)
小猫小狗都存在相同的数据和方法他们都有名字、年龄、身高、吃饭、睡觉等,我们就可以把这些内容抽取出来写成一个父类,让他们去继承这个父类从而获得父类中的这些属性和方法。
2.2继承的优点:
1.提高了代码的可复用性,比如我们升级一块软件,就是在原有的基础上去完善或者增加功能,而不用重新开发
2.提高了可维护性
4.继承是事项多态的前提
2.3继承的缺点:
1.增强了类之间的耦合
2.软件开发的原则是高内聚,低耦合
2.4 有继承关系的执行过程
父类属性–>父类构造方法 -->子类属性 --> 子类构造方法
3、多态
面向对象的多态性,即“一个接口,多个方法”。多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。即同一个引用类型,使用不同的实例而执行不同操作 也就是 父类的引用指向子类的对象
使用多态的思路 —实现多态的三个要素
1、子类继承父类
2、子类重写父类的方法
3、 声明时父类的引用指向子类的对象
四、抽象类
  1. abstract 修饰类, 这个类就变成了抽象类, 抽象类不能实例化 不能new
  2. 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; }}

实现结果
java基础|JAVA基础之超详细面向对象程序设计一|CSDN创作打卡
文章图片

说明:我们在抽象类中定义了area()的抽象方法然后我们定义了两个子类来继承这个抽象类,在两个子类中分别重写的父类的area()方法并计算了不同的公式,于是编写了测试类进行测试,进而得到不同的结果。
五、总结 如果大家有什么问题,或者需要什么资源可以在下面评论或者留言。能帮助大家的我一定及时帮助,并提前祝福大家新年快乐。

    推荐阅读