zoukankan      html  css  js  c++  java
  • Java三大特性[封装,继承,多态]

    封装


    封装是使类中的成员变量都是private,并提供public方法访问这些变量的技术

    实现封装:

    1)、修改属性的可见性来限制对属性的访问。

    2)、为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。

    3)、在赋值和取值方法中,加入对属性的存取的限制。

    用get方法访问成员变量,用set方法获取成员变量。

    例如:

    //员工类

    public class Employee{

     private String name;//名字

     private String gender;//性别

    ......

    }

    //set方法获取名字

    public void setName(String name){

      this.name=name;

    }

    //get方法访问名字

    public String getName(){

    return this.name;

    }


    封装的好处:

    通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。

    由于取值方法和赋值方法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了大规模的修改,程序的可维护性增强。

    继承
    1:extends 关键字
    public class Employee {
    String name;
    Date hireDate;
    Date dateOfBirth;
    String jobTitle;
    int grade;
    ... }
    public class Manager extends Employee {
    String department;
    Employee[] subordinates;
    ... }
    在这样的定义中,Manager 类被定义,具有 Employee 所拥有的所有变量及方法。所有 这些变量和方法都是从父类的定义中继承来的。
    2:初始化子类必先初始化父类
    在 Java 编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全。在前面 的模块中,看到了当一个特定对象被创建时发生了什么。由于继承性,对象被完成,而且下 述行为按顺序发生:
    (1)存储空间被分配并初始化到 0 值
    (2)进行显式初始化
    (3)调用构造方法

    3.单继承性:

    当一个类从一个唯一的类继承时,被称做单继承性。单继承性使代码更可靠。 接口提供多继承性的好处,而且没有(多继承的)缺点。 Java 编程语言允许一个类仅能继承一个其它类,即一个类只能有一个父类。这个限制 被称做单继承性

    4:构造方法不能被继承                                                                

    尽管一个子类从父类继承所有的方法和变量,但 它不继承构造方法,掌握这一点很重要。 一个类能得到构造方法,只有两个办法。或者写构造方法,或者根本没有写构造方法, 类有一个默认的构造方法。 

    5:关键字 super                                                                  

    关键字 super 可被用来引用该类的父类,它被用来引用父类的成员变量或方法

    super 关键字的功能:

    (1):点取父类中被子类隐藏了的数据成员

    (2):点取已经覆盖了的方法

    (3):作为方法名表示父类构造方法

    例如: public class Employee {

          private String name;

           private int salary;

         public String getDetails() {

        return "Name: " + name + " Salary: " + salary; }

      }

       public class Manager extends Employee {

          private String department;
        public String getDetails() {

         return super.getDetails() + // 调用父类的方法 " Department: " + department; }

      }

    6:调用父类构造方法 在许多情况下,使用默认构造方法来对父类对象进行初始化。 当然也可以使用 super 来显示调用父类的构造方法。
    public class Employee {

       String name;

       public Employee(String n) {

      this.name = n;

    }

    }
    public class Manager extends Employee {

       String department;

       public Manager(String s, String d) {

       super(s);

       department = d;

    }

    }

    注意:无论是 super 还是 this,都必须放在构造方法的第一行

     多态

    多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。

    多态存在的三个必要条件
    一、要有继承;
    二、要有重写;
    三、父类引用指向子类对象。

    多态的好处

    1.可替换性(substitutability)。多态对已存在代码具有可替换性。

    2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
    3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
    4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
    5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

    instanceof

    运算符功能:用来判断某个实例变量是否属于某种类的类型。一旦确定了 变量所引用的对象的类型后,可以将对象恢复给对应的子类变量,以获取对象的完整功能。 

    例如:

    public class Employee;

    public class Manager extends Employee;

    public class Contractor extends Employee ;


    public void method(Employee e) {

    if (e instanceof Manager) {

    //如果雇员是经理,可以做的事情写在这里

    }else if (e instanceof Contractor) {

    //如果雇员是普通的职员,可以做的事情写在这里

    }else { //说明是临时雇员,可以做的事情写在这里

    }

    }

    两种类型转换

    1.向上类型转换

    将子类型转换为父类型。

    对于向上的类型转换,不需要显示指定,即不需要加上前面的小括号和父类类型名。

    2.向下类型转换

    将父类型转换为子类型。

    对于向下的类型转换,必须要显式指定,即必须要使用强制类型转换。

  • 相关阅读:
    递归函数
    js原生代码添加表格(行,列用户选择)
    Vue列表数组检测及列表过滤
    字符,图片及视频存储
    小程序js-api简介及操作
    小程序开发-了解
    外购入库单审核可以,删除失败,提示采购单据严格按照数量控制,收料通知单关联数量不能大或负数
    PDO基础应用之异常处理
    进程池用法
    [转]解决Error: That port is already in use.
  • 原文地址:https://www.cnblogs.com/Melony/p/4417220.html
Copyright © 2011-2022 走看看