1.继承:

       通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类。已有的称为父类,新的类称为子类(父类派生子类,子类继承父类)。

   (1)继承的优点:①代码的可重用性;

           ②父类的属性的方法可用于子类;

           ③子类可扩展父类的属性和方法;

           ④设计应用程序变得更加简单。

   (2)关键字“is a”用于判断父类和子类的继承关系是否正确。

   (3)Java中继承的实现:

public  class  子类 extends  父类{}

   (4)继承的单根性:在Java中一个类只能有一个父类;

        传递性:一个Java类可以父类,父类也可以有父类。

   (5)所有类的根类:Object类,又叫基类或超类。Object类是每个Java类的父类,要么是直接的父类,要么就是间接的父类。

            Object类中的三个重要方法:

                ①public  boolean  equals(Object x):检测两个对象是否相等。该方法经常被重写。若两个对象通过该方法判断是相等的,那么两个对象的                                                                                                      hashCode()方法应该产生相同的哈希码

                ②public  String  toString:该方法返回对象的字符串表示。用字符串来表示对象有助于调试或测试。

                ③protected  void  finalize()  throws  Throwale:该方法在对象将要被垃圾回收时调用。

    (6)方法重写:子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。该行为方法生在子类中,对父类方法重写。

子类重写父类方法时,必须遵循如下规则:

              ①子类的方法的返回值类型、方法名和形式参数列表必须和父类中的是相同的;

              ②访问修饰符必须不小于父类中的访问修饰符;

              ③子类中重写抛出的异常不能比父类中抛出的异常多。

  (7)super 关键字:子类想要给继承的方法添加行为,但并不完全替换父类的方法。(默认情况下,子类构造器会调用父类的无参构造方法)

(8)final 关键字:当不希望一个类被继承是则在class前加上关键字final。final关键字可以出现在返回值类型之前的任意位置,习惯上是放在访问修饰符之后。

          ①final类:一个类可以声明为最终类的 。 最终类不能被继承。

          ②final方法:一个方法可以声明为最终的 。 最终方法不能被重写。

      补充:父类的构造方法不能被继承,可用super( , , )来调用构造器,用super调用父类方法。

    (9)abstract关键字:使用关键字abstract可以声明一个抽象类,该关键字可以出现在类声明时class关键字前的任何地方。当类没有实例化必要时,可将该类改为抽象类。

(10)抽象方法:①没有方法主体;②必须出现在抽象类中;③在子类中必须被重写,除非子类也是抽象类。

2.封装:

    (1)封装是使类中的成员变量都是private,并提供public方法访问这些成员变量的技术,封装也被称为数据隐藏。作用:保证数据的安全性。

(2)访问器方法:允许获取成员变量的get方法;

     修改器方法:允许改变成员变量的方法。

     (3)封装的好处:①类的成员变量可以成为只读或是只写的;

            ②类可以对储存在其成员变量中的内容有一个整体的控制;

            ③类的用户不需要知道类是如何存储数据。

    eg:

1 public class Students{
2 private String name;
3 public void setName(String name){
4 this.name = name;
5 }
6 public String getName(){
7 return name;
8 }
9 }

3.多态( polymorphism ):

    (1)是指一个对象有多种形式的能力,一个类的子类可以定义他们唯一的行为,同时共享父类的某些相同的特征。

       静态多态:①在程序编译时发生;

           ②实现方式: 方法重载;

           ③规则:依据对象在定义时的类型相应的调用对应类中的重载方法;

      动态多态:①在运行时发生;

            ②实现方式: 重写父类的同名成员的方法

            ③调用规则:依据对象在实例化时的类型,相应的调用对应类中的同名成员的方法。

    (2)多态的技术基础:①向上转型技术:一个父类的引用变量可以指向不的子类对象;

              ②instanceof关键字:用于判断运行时对象的真正类型(Java语言的多态机制导致了引用变量的声明类型和实际引用对象的类型可能不一致,因此                           引用instanceof运算符);

              ③动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法。

              向上转型:由低精度类型转为高精度类型实行自动转换;

              向下转型:由高精度类型转为低精度类型需使用强制类型转换符。

4.接口—特殊的抽象类(interface):

    (1) ①接口中全都是抽象方法,不能被实例化;

      ②类不能继承接口,只能“实现”接口所定义的方法;

    (2)接口与类

        相似之处:

            ①接口可以有任意数量的方法;

            ②接口保存以“ .Java ”为后缀名的文件,接口名需要与文件名匹配;

            ③接口编译后是后缀名为“ .class ”的字节码文件;

            ④在包中的接口,其相应的字节码文件必须放置在和包名称相匹配的一个目录结构中。

        不同之处:

            ①接口不能被实例化;

            ②接口不包含任何构造器;

            ③接口中所有的方法都是抽象的;

            ④接口中不能包含实例成员变量,唯一可以出现在接口中的成员变量必须是同时声明为static和final,即公有静态常量;

            ⑤接口不能被一个类继承,只能被一个类实现;

            ⑥一个接口能够继承多个接口。

    (3)接口具有以下性质:

            ①接口默认是抽象的;

            ②接口的中每一个方法默认也是抽象的;

            ③接口中的方法默认访问级为public。

    (4)接口使用原则:

            ①使用接口解决多继承;

            ②使用接口为外部类添加功能;

            ③以面向对象的角度考虑,量一个类与生俱来的特征和行为和依赖于外部的可选特征和行为分离。

    (5)类实现接口有2个选择:

            ①实现接口中所定义的所有方法;

            ②声明自己为抽象类。

     使用关键字implements类实现接口,该关键字放在类声明的extends部分之后

     eg:

      public class 类名 extends 父类名 implements 接口名
     一个类可以实现多个接口,接口之间用逗号分隔。

     implements 与 is a 都是继承关系。

    (5)使用接口的好处:

          ①将设计和实现分离,对外隐藏了实现;

          ②面向接口编程是OOP的核心。

关于继承、封装、多态、抽象和接口(Java)的更多相关文章

  1. OOP面向对象 三大特征 继承封装多态

    OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...

  2. JavaScript 继承 封装 多态实现及原理详解

    面向对象的三大特性 封装 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. ...

  3. 继承(extends), 多态 , 抽象(abstract)接口() 易混难点解析

    特性 java是单继承的,一个类直接继承的父类只能有唯一的一个 java中父类可以有多个子类 Object是所有类的父类,一个类没有父类则默认继承Object; 继承中的重写 子类重写方法访问权限不能 ...

  4. JavaScript基础--面向对象三大特性(八):继承封装多态

    一.构造函数基本用法:function 类名(参数列表){ 属性=参数值} function Person(name,age){ this.name = name; this.age = age; } ...

  5. java面向对象(封装,继承,多态,抽象,接口的定义和实现)

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

  6. Java面向对象的基本概念(对象、封装、继承、多态、抽象、接口、泛型)

    对象:是一个自包含的实体,用一组可识别的特征和行为来标识. 类:具有相同的属性和功能的对象的抽象合集.(类关键字class,首字母大写). 实例:就是一个真实的对象. 实例化:创建对象的过程,关键字是 ...

  7. Java—继承、封装、抽象、多态

    类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...

  8. java四大特性理解(封装继承多态抽象)

    封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...

  9. Java知识回顾 (7) 继承、多态与接口、封装

    一.继承 1.1 继承的特性 子类拥有父类非 private 的属性.方法. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展. 子类可以用自己的方式实现父类的方法. Java 的继承是单继承, ...

随机推荐

  1. .Net Task 异步执行不等待结果返回

    该文章适合有一定异步编程基础的童鞋 开始之前先看.NET官网的一张图: 异步编程中最需弄清的是控制流是如何从方法移动到方法的. 没有理解的话可以去看一下 https://docs.microsoft. ...

  2. steam 数据转换

    目录 数组和集合互转 数组转集合 方法一 遍历 方法二 asList 方法三 steam 集合转数组 方法一 循环 方法二 toArray 方法三 steam 小结 string转为Character ...

  3. 如何利用 docker 快速部署 Mysql 服务

    docker 基础教程不再多说,这里只着重讲如何使用 docker 部署 mysql 服务 docker 拉取 访问 dockerhub,搜索关键词 mysql,我这里选择 mysql-server, ...

  4. 终于开始了,微软的野心将通过全场景开发平台dotnet 5体现得淋漓尽致!

      本文已经同步到微信公众号「极客起源」 . 现在都在谈论全场景开发,也就是用一套开发工具,可以开发包括但不限于桌面.移动.IOT.游戏.Web等平台的应用.这样对于开发人员是非常爽的.本文将介绍微软 ...

  5. Agumater 爬虫进度带上了百分比,消除了.0

  6. 浅谈DOM事件的优化

    在 JavaScript 程序的开发中,经常会用到一些频繁触发的 DOM 事件,如 mousemove.resize,还有不是那么常用的鼠标滚轮事件:mousewheel (在 Firefox 中,滚 ...

  7. oracle之二ASM 管理

    Oracle ASM 管理(PPT-II:602-636) 16.1 什么是ASM 自动存储管理即ASM(Automatic Storage Management),是Oracle提供的一项管理磁盘的 ...

  8. 【深入理解Linux内核架构】3.3 页表

    页表:用于建立用户进程空间的虚拟地址空间和系统物理内存(内存.页帧)之间的关联. 向每个进程提供一致的虚拟地址空间. 将虚拟内存页映射到物理内存,因而支持共享内存的实现. 可以在不增加物理内存的情况下 ...

  9. hystrix熔断器之配置

    HystrixCommandProperties命令执行相关配置: hystrix.command.[commandkey].execution.isolation.strategy 隔离策略THRE ...

  10. 【深入理解JVM】学习笔记——-1、JVM基本结构

    转载自:https://blog.csdn.net/singit/article/details/54920387?utm_source=blogkpcl11 什么是jvm?JVM的基本结构, 也就是 ...