封装


封装是使类中的成员变量都是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 + "\nSalary: " + salary; }

  }

   public class Manager extends Employee {

      private String department;
    public String getDetails() {

     return super.getDetails() + // 调用父类的方法 "\nDepartment: " + 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.向下类型转换

将父类型转换为子类型。

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

转载于:https://www.cnblogs.com/Melony/p/4417220.html

Java三大特性[封装,继承,多态]相关推荐

  1. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  2. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  3. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  4. Java提高篇 —— Java三大特性之继承

    一.前言 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事 ...

  5. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  6. 三大特征 封装 继承 多态

    ''' 1.面向对象与面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点:扩展性 ...

  7. java三大特性——封装,继承,多态

    1.封装 使用封装有三大好处: 1.良好的封装能够减少耦合. 2.类内部的结构可以自由修改. 3.可以对成员进行更精确的控制. 4.隐藏信息,实现细节. 5.封装我们也能够对对象的出口做出很好的控制, ...

  8. Python全栈开发——面向对象的三大特性(继承 多态 封装)

    1.继承 1.两层意思 改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def ...

  9. Java面向对象三大特性之继承多态的预习笔记,are you ready? 面对疾风吧!

    文章目录 继承(extends) super关键字 方法重写 instanceof关键字 abstract关键字 接口(interface) 多态 继承(extends) AextendsB A继承了 ...

最新文章

  1. agc018B Sports Festival
  2. Linux环境下查PG库的慢sql,postgresql慢SQL
  3. mfc 静态框接收tab焦点_目标检测中焦点损失的入门指南
  4. ionic - error
  5. CodeForces - 1426F Number of Subsequences(dp)
  6. 给i茅台APP提几个建议
  7. python 怎么取对数_重新开始学习Python 第二十八天 Python 数学模块
  8. 如何打造基于 markdown 的论文工作流程(一)
  9. 【PDN仿真笔记3-电容布局Q3D模型搭建】
  10. 基于Internet应用的分销ERP系统源码
  11. Ubuntu挂载ISO文件
  12. 最简单的P2P加密聊天软件开发准备
  13. angular的 #
  14. android开发中中按钮 变成红边白底,PS人像换红底为白底等的处理
  15. 【笔记】微信小程序基础
  16. 怎么为typora配置一个可爱的小鲨鱼主题?
  17. java 批量图片下载
  18. 2000-2020全国及31省城投债数据
  19. oracle有sysdata,Oracle入门知识 - osc_r8q2esik的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. QT编写的学生管理系统

热门文章

  1. C#三层架构第九课之反射和工厂模式实现多数据库访问
  2. python采集_Python3做采集
  3. 偶然的一次渗透从弱口令->docker逃逸
  4. HTML5+NodeJs实现WebSocket即时通讯
  5. freemarker迭代list、map等常规操作
  6. 数据结构之希尔排序------java实现
  7. 启动数据库报错(1)ORA-01157,ORA-01110
  8. kafka集群操作指南
  9. storm metric的使用说明
  10. Learning to rank的讲解,单文档方法(Pointwise),文档对方法(Pairwise),文档列表方法(Listwise)