面向对象的三大特性(封装-继承-多态).docxVIP

面向对象的三大特性(封装-继承-多态).docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象的三大特性(封装-继承-多态) 一丶封装 ?1 权限修饰符 ??????可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default。 ???????????被public修饰的类可以在任意地方被访问;default类只可以被同一个包内部的类访问。 ??????权限由大到小:public protected default(不写) private ???????????被private修饰的成 ????2)在内存中的位置不同 ?????a:成员变量:在堆内存 ?????b:局部变量:在栈内存 ????3)生命周期不同 ?????a:成员变量:随着对象的创建而存在,随着对象的消失而消失 ?????b:局部变量:随着方法调用而存在,随着方法的调用结束而消失 ????4)初始化值不同 ?????a:成员变量:有默认值 ?????b:局部变量:必须初始化值,否则报错!(在使用它之前,没有初始化) ??(3)set()/get()方法 ????当成员变量被private修饰时,不在本类中无法直接访问,便需要set()/get()方法来解决这个问题 3 封装性 ??封装:是面向对象的第一大特性,所谓封装,就是值对外部不可见(一般而言被private修饰),外部只能通过对象提供的接口(如set()/get()方法)来访问。 ??封装的好处:a.良好的封装能够减少耦合; ?????b.类内部的结构可以自己修改,对外部影响不大; ?????c.可以对成员进行更精准的控制(防止出现与事实不符的情况); ?????d.影藏实现细节。 ??注意:在开发中,类的成员变量全部要进行封装,封装之后通过set()/get()方法访问。 二丶继承extends ?1 实现:通过 class Zi extends Fu{} 实现类的继承 ??(1)子类继承父类,父类中声明的属性,方法,子类都可以获取到; ???当父类中有私有的属性方法时,子类同样可以获取到,由于封装性的设计,使得子类不能直接调用访问。 ??(2)子类除了可以继承父类的结构外,还可以定义直接特有的成员变量,成员方法; ??(3)Java中类的继承只支持单继承,一个类只能继承一个父类,父类可以有多个子类,但是可以多层继承; ??(4)子类不能继承父类的构造方法,可以间接的通过super关键字去访问父类的构造方法(super();); ???在子类的构造方法中如果没有显示的调用父类的构造方法,会默认调用父类的无参构造(所以最好父类都写有无参构造方法)。 ???子类继承父类的访问特点:首先父类进行初始化,然后子类进行初始化;多层访问! ?2?方法的重写(区别重载) ??子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类方法重写(override) ??规则:1)要求子类方法的 返回值类型 方法名(参数列表) 与父类方法一致; ???? 2)子类方法的权限修饰符不能小于父类方法的修饰权限; ???? 3)若父类方法抛异常,那么子类方法抛的异常类型不能大于父类; ??注意:?a.当子类重写了父类的方法以后,可以用 super.方法 调用父类被重写的内容; ????b.子父类的方法必须同为static或同为非static。 class Fu{ ?private int i; ?public Fu(){?//无参构造 super();可以省略 ??super(); ?} ?public Fu(int i){?//有参构造 ??super(); ??this.i = i; ?} ?public void seti(int i){ ??this.i = i; ?} ?public int geti(){ ??return i; ?} ?public void show(){ ??System.out.println("这是父类"); ?} } class Zi extends Fu{? ?public Zi(){?//无参构造 ??super(); ?} ?public Zi(int i){?//有参构造,这块的super就不能省略 ??super(i); ?} ?@Override?//重写了父类中的show()方法 ?public void show(){ ??System.out.println("这是子类"); ?} } public class Test{ ?public static void main(String[]ages){ ??Zi z = new Zi();? ??z.seti(10);???//Zi z = new zi(10); ??System.out.println(z.geti());?//10 ??z.show();?//这是子类

文档评论(0)

183****9588 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档