java基础系列之三大特性

147 阅读4分钟

开篇之作!终于迈出了这第一步,加油!

前言

java是一种面向对象的编程语言,有别于以往的面向过程编程。

在这里就主要介绍以下java的三大特性:封装,继承,多态

封装

什么是封装?为什么要封装?

首先解释什么是封装,很好理解,将某些东西封起来装在某个地方,不让外界接触到。那在java中封装的意思是什么呢?主要是将类的私有属性和对属性的操作方法放在一个类中。这个类中的私有属性外界是不能直接访问的,只能通过我设置的类的公共接口方法。也就是说通过我给出的方法间接操作数据,例如set/get方法。

其实很好理解,我看过某篇博客曾经这样形容道,可以将封装想象成一颗鸡蛋,鸡蛋分为蛋黄,蛋白,蛋壳。蛋黄就是我们的属性,不能直接接触到,蛋白呢类似于一种与外界接触的一种行为,也就是方法,蛋壳就是用来保护的,它提供了一个公共接口,外部想要访问只能通过这个公共接口,然后进行改变对象的属性等等。

再来说一下为什么需要封装?

从上述信息来看,封装将对象的属性/操作方法放在一个类里,外部不能直接访问,这样不就保证了安全性么?所以第一个好处就是保证了数据安全性。再者,我们将公共的业务代码封装在一起,如果需要修改某些信息,这样不需要修改每个用到了这个公共业务代码的地方,只需要修改这个封装类的代码就好。 还有没有好处呢?可以想象一下,我把东西都放在一起封闭起来,别人也就看不到了内部的实现细节等,隐藏了一些信息。

继承

什么是继承?

儿子继承了父亲的财产!把父亲的财产继承了过来,同时自己又可以在这基础上进行扩展。是不是感觉很神奇,但需要注意的是,父类的私有属性子类是不能直接使用的,需要通过特定的方法进行访问。谨记:java类是没有多继承的,只能单继承,但允许多层继承,也就是一个类可以继承一个父类,父类又可以继承另一个父类

多态

多态是一个比较重要的特性,主要分为编译时多态/运行时多态,编译时多态很好理解,都用过重载把,重载就是编译时多态,在jvm中,重载在编译时就可以知道调用的是哪个具体的方法。运行时多态可以理解成重写,重写?重写什么呢?重写是发生在继承当中,子类重写了父类的方法。为什么称为运行时多态呢?首先明确多态的发生条件:继承/重写了父类方法/父类的引用指向了子类的实例(父类 A=new 子类())。在jvm中编译时是只知道调用了父类的方法,只有在用到时才会在jvm的编译阶段将方法的符号引用变为直接引用,符号引号指的就是描述字段,方法名,类的符号信息,而直接引用则是直接指向目标指针。也就是说在运行阶段才能明确是调用了子类的重写方法。这样也就是不同类对相同消息做出不同反应的一种表现。

补充一点:final/static/private修饰的方法是不能重写的。

小白告诫:第一次写博客,有许多不足,我讲的也只是我的个人简介,比较粗浅,欢迎指正纠错!小白现在也正在奋战秋招,但结果很不理想,金九银十就要过去了还是0offer,不知道什么时候才是个头。共勉!