Java基础 --- 面向对象

109 阅读3分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

前言

类,在java中都接触的应该熟悉的不能再熟悉了,对象在java中是类,在c语言中叫结构体,它们本身都是为了面向对象设计实现,在面向对象设计中万物皆可对象。

image.png

对象

对象实例化通过new字段来实现,new在java的虚拟机中其实做了很多东西。原本你需要一个使用一个对象需要在内存中开辟一片空间然后内存的一切操作都交给你管理,但是java虚拟机让你使用一个new来自动帮你创建好内存,并且还帮你管理这片内存的空间。扯远了扯远了,这属于jvm的内容,我们回到对象本身来,当你new出实例对象后,这个对象可以赋值,也可以调用方法。

为什么要面向对象设计

面向对象是为了更好的编程设计,以及为了实现那个在程序设计中的一个目标高内聚,低耦合。事实证明面向对象设计确实是做到了这一点,把万物抽象为对象,让程序员更容易理解的同时,使得代码的健壮性更高。

封装

面向对象的核心概念之一 封装:私有化自己的类成员不对外暴露的情况下,保护自己的内部成员不被外部随意的修改。但这个只是为了保护成员变量,重点是封装后的对外暴露方法,也就是Get and Set这两个方法。如果你是个Spring程序员你应该对这两个方法熟练于心了。但是这两个方法其实大有来头,对外暴露,但是内部实现由该类决定。

继承

面向对象的核心概念之一 继承:继承顾名思义儿子与父亲的关系,这里的继承有点类似血缘继承,也就是父类的特征子类也有,比如父类拥有String name 字段name子类也会拥有name字段,父类拥有run方法,name子类也有run方法,但是子类如果不写run方法,在实现子类时你也可以调用run方法,这个run就是调用的父类方法。java中有个重点就是,每个类不允许多继承!!

多态

面向对象的核心概念之一 多态:多态我们分为两个部分一个是方法的重载与重写,另一个是对象的多态也就是我们上面的继承 或 接口所带来的的多态特性。

方法重写与重载

方法的重写,多用于继承中父类的方法子类是可以重写的,重写后实例化子类的方法,父类方法会失效。但是实例父类对象父类方法还是可以调用的,这里不能搞混。 方法的重载,多见于一个类中的方法调用传入参数不同而造成不同的结果,重载写一个例子就懂了。下面两个方法是不会报错的,不同的局部变量相同的个名称就是重载。

public void run(String name){
    //实现balabla内容
}

public void run(String name, int age){
    //实现balabla内容
}

对象的多态

在之前的章节我们发现 Son a = new Father();这样的例子,java实例化对象都是 类 a = new 类()来实现对象的创建,但是在类经过继承或者接口实现就可以使用多态来创建对象。