Java基础概念
Posted 泼墨成空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础概念相关的知识,希望对你有一定的参考价值。
我们已知Java有三大主要特性:封装、继承、多态。为了更全面的探索学习,我们把接口、抽象也加入到其主要特性之列。故,本篇就探讨Java的五大特性:封装、继承、多态、接口、抽象。提供一个java学习网址:https://www.tutorialspoint.com/java/java_encapsulation.htm
封装
封装是Java的基础特性之一。
java本身是面向对象的一种语言,所以封装可以理解为【对对象本身的属性和能力的一种包装】,从程序员的角度来讲就是对数据和函数的一种封装,从人的角度来讲,封装其实就是对某个事物的一个完整的描述。既然是封装,就意味着一个对象被封装后他便与外面隔绝,只能通过自己去调用属性和能力。
举一个简单的例子,如下有一个学生对象:此学生对象有一个名字和一个年龄属性,同时还有一个学习中文的行为。其中姓名和年龄属性是被申明为private的,并且提供了public类型的setter和getter方法,而学习中文的行为(learnChinese())是public类型的。
总而言之就是Student类把自己的数据隐藏起来,只提供了读写两个方法,也就是说,对象只能进行其属性读写操作而把具体数据隐藏起来了。
其实,封装除了具备将自己的数据隐藏起来的好处外,还有一个好处就是使对象对自己的所有属性和行为拥有绝对的控制权,他把所有的属性和行为都集中在自己手中进行控制使用。
继承
继承在自然生物界是一种普遍现象,比如哈士奇生了个娃还是哈士奇,小哈士奇的皮毛和老哈士奇的一样,也会呜呜呜的叫。这就是小哈士奇继承了老哈士奇的特性。当然小哈士奇是不会具备跟鸟一样能飞的本事的。他不会继承除了老哈士奇的任何东西,但是呢,老哈士奇的东西,小哈士奇不一定能继承过来。
关于Java的继承没有什么过多的概述,但是需要记住以下规则:
- Object类是所有类的超父类。
- 一个类只能同时继承一个类,也就是每个类只能允许有一个直接父类。java只支持单继承。
- 子类无法继承、修改和使用父类中private类型的属性和方法
- 当把子类对象强转成父类对象时,父类就会失去子类所具备的属性,也就是父类对象不能调用子类相关的属性和方法。
- 当把子类对象强转成父类对象时,父类调用相关的属性和方法如果被子类重写了,那么他调用的就是被子类重写的属性或者方法。
多态
多态指的是父类在调用某一个被他的子类们重写的方法或属性时表现出的不同特性。多态的必备条件就是:继承、子类重写父类属性或方法。
其实在上面【继承】一节的第五条描述的就是多态的特性。
假如有这种场景:一个类A,是B和C的父类,A有一个方法叫做a(),B和C都重写了a(),在将B和C的对象强转成A时(上转型对象),此时该对象调用a(),那么a()的表现是不同的。这就是多态。父类的行为被子类们根据需要不同而在上转型对象调用同一个方法时表现也不同。
接口
接口是对行为的一种规范。
如果一类A和B都具备相同的行为,那么可以把相同的行为都提出来形成接口。注意,接口里的方法都是抽象的,之定义了名称而不具备任何实现,所以接口是完全的一种行为的定义,它只是说明了【某个事物是具备这些行为的,至于行为是什么它不并不关心】。
接口需要注意如下几点:
- 接口没有构造器,也不能被实例化
- 接口可以多继承,比如C接口可以同时继承A、B两个接口,这和类的继承不一样。
- 接口在继承时,子接口中定义的方法名字可以和父接口的方法名字一样,但是在实现子接口时只会实现一个方法。
- 接口中可以定义属性,这些属性默认都是public类型,而且你不能设为private(编译就会报错),一旦定义了属性,那么在实现此接口的类中就无法再次修改,因此,接口中的属性就是常量,且是 public final的常量。
- 接口中不能出现static修饰的方法,不能出现static代码块,但是能定义static的变量。
- 接口中的方法只能使用public和abstract两种修饰符,别的修饰符都不能使用,比如private、static等。
抽象类
其实,接口就是一种高度的抽象,将普适性为抽象到一个接口里,让所有有需要的类旭实现。
而抽象类则不同,他不完全抽象,他的适用场景是:某些事物具有完全一致的行为,也有一些共有的但是有一些差异的行为。
比如猫,所有的猫都会舔爪子对不对,这是一种通用行为,可以直接公用,毫无异议。同时,所有的猫也会喵喵喵的叫,但是喵喵喵叫的声音却是不尽相同,有的声音大、有的声音小、有的声音粗、有点声音细,所以我们可以定义一个抽象类名叫Cat如下
以上是关于Java基础概念的主要内容,如果未能解决你的问题,请参考以下文章