Java基础巩固 -- 面向对象

Java基础巩固 – 面向对象

简介:博主本人由于在毕业前忙于找工作,因此选择了Java后端开发,但学习过程比较碎片化,并没有进行系统性学习。本章博客将会系统性重温Java的一些基础知识和概念。

1.面向对象

1.1 概念

面向对象是一种编程思想,其基本特征分别为 封装继承多态。其核心就是将事物看做一个整体,从事物的特征(属性)以及行为(方法)两个方面对事物进行描述。

1.2 对比

编程语言有面向对象如Java、Python等也有面向过程的C,其对比如下:

面向过程面向对象
设计思路自上而下、层次化、分解自下而上、对象化、综合
程序单元函数模块对象
设计方法算法+数据结构数据+方法
优点相互独立、代码共享,性能较优接近人的思维方式、方便使用、易维护、复用以及扩展
缺点维护困难执行效率较低

相较于面向过程,面向对象可以不用了解具体实现过程,只需要调用其中的功能即可。

1.3 面向对象三大核心

  • 可重用性:代码可以重复使用,减少代码量,提升开发效率
  • 可扩展性:可以在系统中容易地加入新功能
  • 客观理性:将功能与数据结合,方便管理

1.4 抽象

抽象就是把同一类事物中共有的特征和行为进行抽取、归纳、总结。


2.Java面向对象

2.1 类

2.1.1 概念

用于描述一类具有相同特征(属性)和行为(方法)的对象

2.1.2 组成

  • Java中使用class来定义类,在类中包含 成员属性成员方法
public class 类名 {
    //成员属性
    //成员方法
}
  • 类的成员
    • 成员变量:成员变量位于类中并在方法之外。
    • 成员方法:和之前定义的方法几乎是一样的,只不过把static关键字去掉

2.1.3 关系

类是对象的抽象,类的实例化是对象

2.2 对象

2.2.1 概念

对象是系统中用于描述客观事物的实体,是构成系统的基本单位。

  • 实例化流程
类名 对象名 = new 类名();
  • 成员变量
数据类型默认值
byte0
short0
int0
long0
float0.0
double0.0
booleanfalse
char空字符
引用类型null

2.3 成员变量

成员变量又是全局变量,成员变量定义在方法外部,类的内部。使用范围为这个类。在Java虚拟机中成员变量将会存储在 堆内存 中。

2.4 局部变量

局部变量位于方法中或某个语句块内部,适用范围仅限方法内或语句块中,且需要初始值。局部变量保存在 栈内存 中。

2.5 成员方法

  • 创建流程:
访问修饰符 返回值类型 方法名称(参数列表){
    方法体
}

成员变量可以直接在成员方法中使用,但是main方法中如果调用成员变量和方法必须通过对象.属性名\方法名(参数列表)的形式来调用。而成员方法之间的调用,直接写方法名(参数列表)即可。

2.6 构造方法

对象实例化后最先调用构造方法,可以创建对象,并且初始化成员变量。

  • 方法和类名相同
  • 无任何返回值
  • 不能被static等关键字修饰
  • 可以重载方法
  • 当一个类中没有写构造方法时,系统会默认给该类一个默认的无参构造方法。当自己定义构造方法后默认的构造方法就不存在了。

2.7 this关键字

this关键字表示调用当前对象的变量。

public class Student{
    //成员变量
    String name;
    int age;
    int classNum;

    public Student(String name,int age,int classNum){    
        //s1调用了构造方法,所以这里的this代表s1对象
        this.name = name; //成员变量name=局部变量name
        this.age = age;
        this.classNum = classNum;
    }
    
    public static void main(String[] args){
        Student s1 = new Student("张三",18,1);
        System.out.println(s1.name);//打印 张三
    }
}

2.8 封装

封装是将代码及其处理的数据绑定在一起的方式,该机制的存在保证了程序和数据不受外部干扰。

  • 封装的目的在于保护信息,保证数据安全
  • 封装包括属性封装和方法封装
  • Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问, 封装不是绝对的封装,如果想要访问封装起来的数据,可以通过指定的入口即可
  • 属性和方法封装相辅相成、密不可分。

2.9 继承

程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。

  • 继承特点:
    • 继承需要有层次结构并且具有一定可传递性。
    • 子类将会继承父类的所有属性和方法,但是不包括 私有属性构造方法
    • 子类在继承父类时可以实现自己的属性和方法。
    • Java不支持多继承,即一个子类只能继承一个父类,但一个父类可以被多个子类继承。

2.9.1 super关键字

表示当前父类的引用,并且该关键字只能出现在有继承关系的子类中
-用法:

  • super.属性名/super.方法名:表示父类的属性和方法,和子类中的属性或方法 重名 时使用。
  • super(参数列表):出现在子类构造方法的第一句代码。

2.10 多态

多态就是同一函数在不同类中有不同的表现

  • 面向对象的多态性,一个接口多个方法
  • 多态性体现在父类中定义的属性和方法被子类继承后,可以具有不同的属性或表现方式。
  • 多态性允许一个接口被多个同类使用,弥补了单继承的不足。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值