面向对象编程java——封装、继承、多态

面向对象编程java——封装、继承、多态

听过java语言的都知道,java具有三大特征——封装、继承、多态。简单来说,对于学习java来说无论如何这都是很重要的基础知识。无论哪一点,都有较多的语法,都需要努力掌握。
封装,字面意思是把什么包装起来。在Java中是指将对象的状态信息隐藏在对象的内部,不允许外部成员直接访问对象的内部信息,而是通过该类中所提供的方法来实现对类的访问和操作。简单来说,是对对象内部信息的一种隐藏技术。对象的内部信息状态都被隐藏在对象的内部。外界是无法修改的。可以把不想让外人看见的东西隐藏起来。就例如:人们的年龄,不应该被外界直接修改,而是随着年龄逐渐增加。或者说是一台电脑,都会用最精致的外壳将其组装起来。人们看不见外部的组件。封装可以更好的隐藏类内部的实现细节,提高代码的可维护性和重用行。便于维护与检测代码。
一提起封装,便会有如何封装,Java中是通过访问控制符来实现对类的封装或者说是隐藏。一共提供了四种修饰符:public(公共的),defaule(默认的,就是不写修饰符也是这个功能),protected(受保护的),private(私有的)。其访问权限如下:
封装的四个修饰符
一般都是上述的四种访问修饰符再加上java中有特定的setter与getter方法相互配合,实现对类内部细节的隐藏,setter()方法一般都有参数,为其赋值,getter()方法一般为取值,无参数。
继承,字面意思为“子继父业”,子与父间形成一种特殊的体系关系。java中,是在现有类的基础上构建一新的类,这个新类叫做子类,子类拥有父类一切所能继承的属性和成员方法。实现继承的类叫做子类(基类),被继承的类叫做父类(超类)。
java中的继承是通过extends关键字实现的。语法格式如下:
继承继承中有三个重要的点:
1、Java中只支持类与类之间的单继承,到了接口才有多继承
2、super()方法,在子类的构造方法中会优先调用父类的无参构造,如果父类中没有无参构造,则在子类的构造中就需要调用父类的有参构造
super()的使用如果加上父类的无参构造,上述代码即正确。这也说明在子类的构造方法中,会始终有一句super();方法存在,无论写与不写。切记不能忘记这个super()方法。
在这里插入图片描述
3、不可乱继承,必须要满足 “.子类…is a…父类.”的关系。例如:一个父类:person 具有姓名与年龄,又需要一个dog狗类,不能因为方便,让dog extends person.这不就是乱继承嘛。
多态,可以不夸张的说,前面的封装与继承都是为了多态服务的,也可以说:“没有继承,就没有多态。”java的多态指的是一个对象在不同条件下的不同状态。java给出多态的两种类型,一种是编译时类型,一种是运行时类型。<这里需要注意:编译看左,运行看右>当两种类型产生不一致时,就产生了多态,如人在不同环境的不同身份,在家是父母的孩子,在学校是学生等。
多态的语法要求:
1、必须存在继承关系或者是实现关系,或者都存在。
2、父类型引用指向子类型实例;可分两种一种是向下转型,父类的引用指向子类的对象。另一种是向上转型,子类型的引用指向父类型的调用。
就例如:父类Person,子类Student
示例向下转型:这里就解释了编译看左,运行看右的这一特性。
向下转型
向上转型:子类型转型时需要强制类型转换。
向上转型这里就是多态的两种,在以后的编程中会有很多多态情况的出现,有可能认不出类型,这里提到一个关键字instanceof,可用于判断其左边的对象是否是右边的实例。对理清对象见的关系有一定作用。
instanceof
以上是我对java三大特征的理解,可能有些地方不够好,欢迎指正。

发布了11 篇原创文章 · 获赞 8 · 访问量 1594

猜你喜欢

转载自blog.csdn.net/weixin_44627238/article/details/87091691