JAVA面向对象的三大特征(详细)


文章目录

  • 前言
  • 一、面向对象特性之封装
  • 二、面向对象特性之继承
  • 1.继承的基本概念
  • 2.类的继承格式
  • 3.继承的特性
  • 三、面向对象特性之多态
  • 1.多态的基本概念
  • 2.多态的使用场景
  • 3 instanceof关键字
  • 4.多态的运行方式
  • 总结



前言

以下是本人自学过程中所总结的笔记(含个人理解),欢迎大家浏览并留言,若有错误的地方请大家多多包含,并感谢大家的斧正。

一、面向对象特性之封装

封装就像是一个电脑机箱它仅仅只留下设备需要的接口而不暴露其中的细节让使用者能够放心的使用而不容易损毁,而JAVA的封装就是将对象的属性与方法通过访问修饰符的访问权限规约,来实现内部结构的使用范围,通过公有方法如get,set方法来让外界访问,修改只能发生在内部所以通过对数据的规约,来保证进入的属性符合使用条件,它能保证对象的数据不被错误修改,减少维护的难度,让对象的重复使用变的更为容易,让程序更容易扩展,提高安全性。

二、面向对象特性之继承

1.继承的基本概念

JAVA中的继承就像生物学中的分类一样如老虎与猫同样属于猫科动物有着猫科动物的相同的特性,但是因为都有自身独特的特性所以分为不同的生物,用JAVA的语言来描述就是,老虎这个子类继承于猫科动物这个父类,老虎拥有猫科动物所有非私有的属性与方法,但自身对这些方法都有着独特的表现

2.类的继承格式

在 Java 是通过 extends 关键字来声明一个类是从另外一个类继承而来的,一般形式如下:

class 子类 extends 父类 { }

3.继承的特性

1.首先类与类之间都是单继承的就如同父与子的关系一般,父类可被多个子类继承但,子类只可继承一个父类,但是可以多级继承,就是可以有爷爷及以上的关系,在JAVA中所有类有一个共同的祖宗就是Object。

2.子类为了确保直接或间接继承的变量都被初始化在实例化对象时会默认调用父类的构造方法,并且优先级要高于子类,它会延续到最顶层的object类,
如果父类的构造方法为有参则系统自动生成的无参构造方法则会消失,如需要需自己添加。

3.super 关键字为继承中特有的关键字主要用于子类因为自身对父类的方法或属性做出了改变,但是仍需要调用父类的方法与属性,需要注意的是调用父类的构造方法为了第2点只能放在程序的第一行。

三、面向对象特性之多态

1.多态的基本概念

多态就好像在考试时知道要带笔去考试,但是具体的题目使用什么笔需要在考试的时候才知道,用JAVA的语言讲就是同一个引用类型,使用不同的实例而执行不同操作

2.多态的使用场景

1.向上转型
使用父类对象通过子类对象来实例化,因为子类包含父类的所有信息。所以向上转型是不需要进行强制类型转换的.比如下面的代码

Felidae f=  new tiger(); Felidae f1= new Cat();

需要注意的是向上转型虽然没有强制转换但是还是会丢失精度的。
2 向下转型
与向上转型对应的一个概念就是“向下转型”,所谓向下转型,也就是说父 类的对象实例化为子类对象,但是需要注意的是因为子类中有父类没有的信息,所以这时则必须要进行强制的类型转换,比如下面的代码

Felidae f=  new tiger(); tiger t= new (tiger)f;

需要注意的是因为子类向下转型需要指明为哪一个子类所以向下转型必须向上转型。

3 instanceof关键字

instanceof 可以判断一个类是否实现了某个接口,也可以用它来判断一个实 例对象是否属于一个类。instanceof 的语法格式为:

对象 instanceof 类(或接口)

可以用它来减少多态转型的错误。

4.多态的运行方式

因为创建对象是由左边的类来创建的而成员变量与静态的事物是属于类的所以不管在编译还是运行都由左边的父类决定,而成员方法会因为子类的重写导致父类的成员方法被复写了所以运行由子类决定结果,这也是多态的意义之一。
静态与成员变量:编译看左边(父类),运行看左边(父类)

成员方法:编译看左边(父类),运行看右边(子类)

总结

这次学习了JAVA面向对象的三大特性,逐渐感觉到JAVA语言与其他语言的不同与优势所在,让它成为了最面向对象的语言,让代码编程变得更为容易,让编程更为规范,让代码安全与可扩展性都得到了提升,使得开发变得更为有效率。