面向对象三大特征——封装、多态、接口

  一、封装

  1.封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作与访问。

  2.封装的好处:

    1).只能通过规定方法访问数据;

    2).隐藏类的实现细节;

    3).方便修改实现;

    4).方便加入控制语句。 

  3.封装的步骤:

    1).修改属性的可见性。——设为private;

    2).创建爱你共有的getter/setter方法。——用于属性的读写;

    3).在getter/setter方法中加入属性控制语句。——对属性值的合法性进行判断。

  4.使用面向对象的思想开发程序的好处:

    1).客户和软件设计开发人员之间、软件设计开发人员内部交流更加流畅;

    2).提高软件设计和开发效率。

  5.方法重载的原则(一个类中):

    1).方法名相同;

    2).参数项不同;

    3).与访问修饰符和返回值无关。

  6.方法重写的原则(不同的类中):

    1).方法名相同;

    2).参数列表相同;

    3).返回值类型相同或者是其子类;

    4).访问权限不能严于父类。

  位置 方法名 参数表 返回值 访问修饰符
方法重写 子类 相同 相同 相同或是其子类 不能比父类更严格
方法重载相同 同类 相同 不相同 无关 无关

  构造方法的语法:

    访问修饰符 构造方法名(此处可以指定参数){

      //初始化代码

    }

  构造方法无返回值类型,且构造方法名与类名相同。

  系统默认提供无参构造方法。当自定义构造方法后,系统不再提供无参构造方法。

  二、继承

  父类可以派生出多个子类,而子类只可以继承一个父亲。继承必须符合is-a原则。

  1.使用继承 父类的语法:

    public class 类名{

      //公共的属性和方法

    }

   子类继承父类的语法:

    访问修饰符 子类名 extends 父类名{

      //子类特有的属性和方法

    }

  2.super关键字来访问父类的成员:

    1).super只能出现在子类的方法和构造方法中;

    2).super调用构造方法是,只能是第一句;

    3).super不能访问父类的private成员。

  3.子类不能继承的父类成员:

    1).private成员;

    2).子类与父类不在同包,使用默认访问权限的成员;

    3).构造方法

  4.抽象方法(abstract):

    1).抽象方法没有方法体;

    2).抽象方法必须在抽象类里;

    3).抽象方法必须在子类中被实现,除非子类是抽象类。

   5.抽象方法父类的语法:

     public abstract class 类名 {

     }

   6.抽象类和抽象方法:

    1).抽象类不能被实例化;

    2).可以有0~多个抽象方法;

    3).非抽象类必须重写父类的所有抽象方法。

   7.final修饰符

    1).修饰的类,不能再被继承;

    2).修饰的方法,不能被子类重写;

    3).修饰的变量将变成常量,只能在初始化时进行赋值。

   访问修饰符总结:

访问修饰符 本类 同包 子类 其他
private     √      
默认(friendly)     √     √    
protected     √     √     √  
public     √     √     √     √

 三、多态

  1.多态的概念:

    多态:同一个引用类型,使用不能的实例而执行不同操作。

  2.使用多态实现思路:

    1).编写父类;

    2).编写子类,子类重写父类方法;

    3).运行时,使用父类的类型,子类的对象。

  3.实现多台的两种方式:

    1).使用父类作为方法形参实现多态;

    2).使用父类作为方法返回值实现多态;

  4.

   1).向上转型——子类转换为父类,自动进行类型转换;

   2).向下转型——父类转换为子类,结合instanceof运算符进行强制类型转换:

   语法:

    对象名 instanceof 类或接口

    instanceof通常和强制类型转换结合使用。

  5.多态的优势:提高代码的可扩展性和可维护性。

  以上仅个人意见,如有需要补充的地方,大家及时提出,进行改正。共同学习,共同进步!

  

原文地址:https://www.cnblogs.com/yilinzi/p/dalinzi.html