Java基础 -- 面向对象特性

x33g5p2x  于2022-05-11 转载在 Java  
字(2.4k)|赞(0)|评价(0)|浏览(623)

🍕前面的话🥞

今天状态不是很好,那么就想着把前面的 Java 基础拿出来翻看一下。顺便复习一下。因此,也就写下了这篇文章。当然是由感而发啊。如果有哪些不足的地方还请小伙伴们细细指出嗷。其实现在大部分的人都是只注重编程技巧或怎样编程上,当然一些基础概念也是十分的重要的。正所谓 基础不牢,地动山摇。在这一片文章中,我将从这两个方面去进行阐述喽。
👩‍💻博客主页:崇尚学技术的科班人的博客主页
✨欢迎关注🖱点赞🎀收藏⭐留言✒
🔮本文由 崇尚学技术的科班人 原创,csdn首发!
😘系列专栏:java
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🥧面向对象特性

其实当人们谈论到 Java 的时候,大多数都会直接谈论到它是一门面向对象的编程语言。那么如果我问一个问题 Java 面向对象的三大特性是什么?。我相信大家都能够答出来,那么就是 封装、继承、多态。但是要你去详细介绍一下这三个特性的时候,又有多少人能够很快而有准确的回答出来呢?所以在这个飞速发展的时代,在这个快餐式学习横行的时代,我们有时候需要慢下来、静下来去沉淀一下了,去慢慢地、踏实地学习一下了。

那么下面我将从代码和概念两个角度进行深度讲解 Java 的面向对象特性。

🍦代码例子

  • Coffee抽象类
public abstract class Coffee {

    public abstract String getName();

    // 1. 加糖
    public void addSugar(){
        System.out.println("加糖");
    }

    // 2. 加奶
    public void addMilk(){
        System.out.println("加奶");
    }
}
  • LatteCoffee子类
public class LatteCoffee extends Coffee {
    @Override
    public String getName() {
        return "拿铁咖啡";
    }
}

想必大家对这两个代码例子应该已经熟悉的不要再熟悉了吧,这个 咖啡 作为抽象父类,其中有一个获取对应对象的抽象方法 – getName()

  • 为什么要设计这么一个抽象方法呢?

其实作为一个抽象类呀,就比如说上面这个 咖啡 抽象类,它只是 咖啡 的一个抽象总称。所以说,咖啡的话那么就会有很多种类的咖啡。比如说,美式咖啡、拿铁咖啡等。那么我们需要根据它的名字进行判别,就通过这么一个抽象方法,当字类进行继承对应的父类的时候,那么需要对其进行重写。那么就实现了不同咖啡的不同标识了。

其上,这两段代码就涉及到了面向对象的两大特性:继承和多态。上面这样介绍一下,方便一下没有 Java 基础的同学也能看懂,如果有一定 Java 的同学的话,那么就复习一下喽。

虽然例子很简单,但是运用到了其两大重要概念。下面我将从三个特性展开详细介绍。

🍭面向对象和面向过程的区别?

我们都知道 c 语言的话,它是面向过程的;而 Java 语言的话,它是面向对象的。那么它们两者的区别是什么呢?

面向过程

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
  • 缺点:没有面向对象易维护、易复用、易扩展。

面向对象

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
  • 缺点:性能比面向过程低。

🧀 封装

如果在面试中,你被面试官问到了 你来详细介绍一下封装是什么意思?。你会如何回答呢?可能会有一些小伙伴会说,那不就是将一段代码进行封装成一个函数或类吗?

如果你是这样回答的话,其实 get 到了一点边了,但是你就像是一个没有学过 Java 语言的人一样,换句话说就是回答的不够专业。我这里就给出标答来了。

  • 封装:封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏

🍦继承

还是这么说呀,如果叫你详细的介绍一下肯定都是描述不太准确的。那么这就是基础不太扎实了。肯定有很多人会这样描述这个概念,那不就是 子类继承父类呀这回答的也太不专业了吧,一看就是圈外人

标答:

  • 继承:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。

🥡多态

我这里就不多加赘述了。

标答:

  • 多态性:它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。

其实也就是如上面我所举出的例子来说的话,也就是咖啡父类定义了一个抽象方法,他定义的是一个规范,如果子类继承它的话,不同的子类将会表现出不同的行为,那么就是不同的咖啡品种会有不同的名字。这也就是说子类需要重写父类的相关方法进行表现出不同的属性和行为。

  • 多态的三要素
  1. 继承:在多态中必须存在有继承关系的子类和父类。
  2. 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  3. 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。

当然上面介绍到的重写也只是多态实现的一种方式,多态的实现方式介绍如下:

  • 重写:重写发生在子类与父类之间, 重写方法返回值和形参都不能改变,与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分。即外壳不变,核心重写!
  • 重载:重载 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

编写不易,如果你感觉对你有帮助的话,请你三连支持,后面的文章会一点点更新。

相关文章