封装
java中的第一特性就是封装,以世界中的实体体现到计算机的世界,每个对象都有自己的属性和行为。java中用类来将属性和行为封装到一起,将这个类的实例创建出来以后,这个实例就有这样的属性和行为,并对实例的使用者隐藏数据的实现过程。
1、封装的基本原则:
1)将实例变量标记为私有的(private),表示只能在类的内部使用。
2)提供公有(public)的get和set方法,用来控制对实例变量的存取动作。
其中,实例变量在初始化的时候(不赋值的情况下)默认是有初始值的,而局部变量(方法内部的变量)是没有初始值的,在没有赋值的情况下使用局部变量则会报错。
2、在对象调用类中的方法时,可能会传参数,这里根据参数的类型分为按值传参和按引用传参两种方式。
基本数据类型作为参数时,按照值传递的方式。也就是说定义一个基本数据类型的变量并赋值,然后该变量作为参数传递,如果在方法中对该变量值做修改,则该变量在本身定义处的值不会改变。
引用数据类型作为参数时,如果在方法内部对变量的属性值做了修改,那么该变量的属性值就会随着修改。
继承
java中第二特性就是继承。
1、继承的目的:实现代码的复用、定义出某些类共同的模板。
2、继承的概念:被继承的类叫做父类(基类或者超类),实现继承的类叫做子类。子类拥有父类的所有公有的实例变量和方法,通过关键字extends实现,且类的继承只能是单继承,一个子类只能有一个父类,但是子类可以拥有父类的特性(公有的实例变量和方法),也可以拥有父类的父类的特性(公有的实例变量和方法),这叫做继承的传递性。
3、继承产生的关系:同时子类还可以有自己的实例变量和方法,子类可以重写父类的方法,子类在调用的时候,会先监测自己是否有这个方法,如果有则调用自己的;若自己没有这个方法而直接父类有,则会调用直接父类的;如果直接父类也没有,则会调用间接父类的。如果子类重写了父类的方法,但是子类在调用的时候想要调用直接父类的方法则使用super.方法名()来实现调用直接父类的方法,如果子类想要调用间接父类的方法,则要通过直接父类的super.方法名()来调用。所有的类都继承自Object,如果类定义时没有继承任何类,那么这个类的直接父类就是Object,如果类继承了我们定义的其他类,那么这个类是间接的继承了Object类,所有的类都拥有Object类的方法,如果Object类的方法不满足需求时可以在子类中进行重写,我们经常重写的方法有toString()、equals()方法。
4、重写:子类声明一个和父类相同的方法,包括访问修饰符、返回值、方法名、参数类型、参数个数。
5、继承中的构造方法:在创建子类的对象时,java会默认的通过super();来调用父类的构造方法,创建父类对象,也就是必须按照继承关系由高到低(父→子)进行调用,这部分工作java已经悄悄地替我们做了,然而如果父类的构造方法被重载并且没有定义无参的构造方法,那么子类中的参构造方法(不论是否是有参构造还是无参构造)是不会被编译器通过的,此时要在子类的构造方法中重新调用父类的新的构造方法才可以,并且子类的每个构造方法中只能调用一次父类的构造方法。
多态
1、多态存在的条件:
有继承关系;实现类中方法的重写;父类引用子类对象;
由以上得知,封装和继承是实现多态的前提条件。
2、多态的定义:同一个方法可以根据发送对象的不同而有不同的行为表现。通过动态绑定实现,在执行的时候判断对象的实际类型,来确定调用相应不同的方法。
3、多态作用:
3.1 降低类之间的耦合程度:通过方法返回父类或者参数传递父类,即父类指向子类对象的形式减少子类对象在方法中的比例程度,降低耦合。
3.2 提高可替换性:还是通过父类指向子类来体现。
3.3 提升可扩展性:在父类的基础上增加子类的个数不受限制,增加的子类不会影响现有的多态结构。
3.4 通过接口提升通用性:父类通过方法签名,给子类提供接口,子类在父类基础上进行方法重写来达到自己的特殊需求。
3.5 灵活性:子类的增加、以及接口的提供都提升了程序的灵活性。
多态规则:
在多态的情况下,引用数据类型可以是实际对象类型的父类;
当父类指向子类时,只能调用父类中具有的方法,不能调用子类中特有的方法,但是可以调用子类重写过父类的方法;
当方法的返回类型为父类时,说明方法可以返回父类及其父类下面所有子类对象;
当方法的参数为父类时,说明可以传入父类及其父类下面所有子类对象。
相关推荐
封装继承多态总结
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
java封装 继承与多态 程序设计 类与对象
Java封装继承多态实例以及文件流操作,自己整理的东西,用了单态模式实现了多态,并且贯彻了OOP思想,用到了文件流的写入与读取,希望对大家有帮助
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
前端模块化脚手架,可实现类似java的封装继承多态特性
java基础_继承封装 多态,概念的梳理,对初学者很有帮助,看一遍就清楚了
java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...
JAVA封装继承与多态PPT教案学习.pptx
JAVA面向对象基础测试题-继承-封装-多态等测试题.docx
可以实现java的继承封装多态等功能,含有三个类
java面向对象的基本知识,封装继承多态等
Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门教程 java类和对象方法以及包的使用(共56页)....
JAVA 封装、继承、多态 三大特性以及实操
主要介绍了java封装继承多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
JAVA自测自己编写,充分了解封装继承多态,适用于初学JAVA编程
java的题目 继承的测试题大神大神来看看
java总结,基础语法,面向对象,封装继承多态,异常
jave面向对象特性继承、封装、多态的实验报告,jave重要实验。
Java(继承与多态)