java 继承 多态 接口 用法及区别
1个回答
展开全部
一、封装 (encapsulation)
定义:封装就是将客户端不应看到的信息包裹起来。使内部执行对外部来看不一种不透明的、是一个黑箱,客户端不需要内部资源就能达到他的目的。
1.事物的内部实现细节隐藏起来
2.对外提供一致的公共的接口――间接访问隐藏数据
3.可维护性
--------------------------------------------------------------------------------
二、 继承 (inherit)
JAVA继承特点
继承:父类的成员能否继承到子类?
对类成员访问的限制及子类继承情况: (从严 到宽 )
private 私有,本类内部 不能继承
(default) 本类+同包 同包子类可继承
protected 本类+同包+子类 可以继承
public 公开 任何地方都可以访问 能继承到子类
--------------------------------------------------------------------------------
覆盖
1、定义: 覆盖了一个方法并且对其重写,以求达到不同的作用。
2、用法:
a、最熟悉的覆盖就是对接口方法的实现
b、在继承中也可能会在子类覆盖父类中的方法
3、产生 “覆盖”的条件:
1、方法名:相同
2、参数表:相同(个数,类型)
3、访问限制符:相同或者更宽
4、返回值类型:相同 或者 子类返回的类型是父类返回的类型的子类
5、不能抛出比subclass(父类)更多的异常
注意:当我们在子类中创建的静态方法,它并不会覆盖父类中相同名字的静态方法。
(2)接口:
多态意味着“很多形式”,可以把儿子当作爸爸或爷爷!!
可以通过继承来定义相关类间的共同协议(方法就是协议的标志!),这样就等同于在对其他程序代码声明:“我所有的子类都能肠系用这些方法来执行这几项工作!”
为了避免出现“致命方块”所以java不允许出现多继承,接口正是我们的救星!java接口是100% 的纯抽象类。而且使用接口可以继承一个以上的来源,同时其他类也可以实现同一个接口中。所以可以为不同的需求组合出不同的继承层次!
三。如何判断应该是设计类、子类、抽象类或接口呢?
(1)如果新类无法对其他的类通过IS-A测试时,就设计不继承其他类的类。
(2)只有在需要某类的特殊化版本时,以覆盖或增加新的方法来继承现有的类。
(3)当你需要定义一群子类的模板,又不想让其他人初始化此模版时,设计出抽象的类给他们用。
(4)如果想要只定义出类可以扮演的角色,使用接口。
说那么多
自己 经常用用就知道了~封装,继承,多态
封装 就是 把 孩子放到一块管理
继承 就是 生孩子
多态 男人 ,女人 ,人妖 ,就是 人的多态
你认为大家不理解吗?这些东西,只有用了先知道。
多态,你写过名称相同,参数不同的函数吗?
继承,你的所有aspx页面,不都是继承Page吗?
封装,你没有自己写过类吗?你类里没有封装方法吗?
接口主要涉及跨平台、跨语言、移植性要求较高的编程
一般情况下不会用到的......
面向对象的三个特征.继承,封装和多态.
定义:封装就是将客户端不应看到的信息包裹起来。使内部执行对外部来看不一种不透明的、是一个黑箱,客户端不需要内部资源就能达到他的目的。
1.事物的内部实现细节隐藏起来
2.对外提供一致的公共的接口――间接访问隐藏数据
3.可维护性
--------------------------------------------------------------------------------
二、 继承 (inherit)
JAVA继承特点
继承:父类的成员能否继承到子类?
对类成员访问的限制及子类继承情况: (从严 到宽 )
private 私有,本类内部 不能继承
(default) 本类+同包 同包子类可继承
protected 本类+同包+子类 可以继承
public 公开 任何地方都可以访问 能继承到子类
--------------------------------------------------------------------------------
覆盖
1、定义: 覆盖了一个方法并且对其重写,以求达到不同的作用。
2、用法:
a、最熟悉的覆盖就是对接口方法的实现
b、在继承中也可能会在子类覆盖父类中的方法
3、产生 “覆盖”的条件:
1、方法名:相同
2、参数表:相同(个数,类型)
3、访问限制符:相同或者更宽
4、返回值类型:相同 或者 子类返回的类型是父类返回的类型的子类
5、不能抛出比subclass(父类)更多的异常
注意:当我们在子类中创建的静态方法,它并不会覆盖父类中相同名字的静态方法。
(2)接口:
多态意味着“很多形式”,可以把儿子当作爸爸或爷爷!!
可以通过继承来定义相关类间的共同协议(方法就是协议的标志!),这样就等同于在对其他程序代码声明:“我所有的子类都能肠系用这些方法来执行这几项工作!”
为了避免出现“致命方块”所以java不允许出现多继承,接口正是我们的救星!java接口是100% 的纯抽象类。而且使用接口可以继承一个以上的来源,同时其他类也可以实现同一个接口中。所以可以为不同的需求组合出不同的继承层次!
三。如何判断应该是设计类、子类、抽象类或接口呢?
(1)如果新类无法对其他的类通过IS-A测试时,就设计不继承其他类的类。
(2)只有在需要某类的特殊化版本时,以覆盖或增加新的方法来继承现有的类。
(3)当你需要定义一群子类的模板,又不想让其他人初始化此模版时,设计出抽象的类给他们用。
(4)如果想要只定义出类可以扮演的角色,使用接口。
说那么多
自己 经常用用就知道了~封装,继承,多态
封装 就是 把 孩子放到一块管理
继承 就是 生孩子
多态 男人 ,女人 ,人妖 ,就是 人的多态
你认为大家不理解吗?这些东西,只有用了先知道。
多态,你写过名称相同,参数不同的函数吗?
继承,你的所有aspx页面,不都是继承Page吗?
封装,你没有自己写过类吗?你类里没有封装方法吗?
接口主要涉及跨平台、跨语言、移植性要求较高的编程
一般情况下不会用到的......
面向对象的三个特征.继承,封装和多态.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询