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. 揭秘!containerd 镜像文件丢失问题,竟是镜像生成惹得祸

    导语 作者李志宇,腾讯云后台开发工程师,日常负责集群节点和运行时相关的工作,熟悉 containerd.docker.runc 等运行时组件.近期在为某位客户提供技术支持过程中,遇到了 contain ...

  2. laravel+vue+vuetify(下载图片到本地)

    vue.js如何根据后台返回来的图片url进行图片下载   downloadByBlob(url,name) {                 let image = new Image()     ...

  3. android尺寸问题(转)

    android尺寸问题(转) (2013-01-15 16:55:36) 转载▼ 标签: 杂谈 分类: LINUX 最近公司做的项目中涉及到屏幕自适应的问题.由于做的是电视版的项目,因此屏幕自适应问题 ...

  4. 【HttpRunner v3.x】笔记 ——2. 用脚手架快速创建项目

    环境装好了,相信很多童鞋已经迫不及待的想run起来了,但是面对一个陌生的框架又无从下手.没关系,我们可以用脚手架来快速生成一个httprunner项目. 一.快速生成项目 我们不妨先输入httprun ...

  5. hdu6704 2019CCPC网络选拔赛1003 K-th occurrence 后缀自动机+线段树合并

    解题思路: fail树上用权值线段树合并求right/endpos集合,再用倍增找到待查询串对应节点,然后权值线段树求第k大. #include<bits/stdc++.h> using ...

  6. C#知识点:操作XML

    XML是什么就不用说了文本标记语言. 主要纪录如何对XML文件进行增删改查. Xml的操作类都存在System.xml命名空间下面. 应用型的直接上代码 using System; using Sys ...

  7. 借助Java的JDBC自制“DBMS”管理操作数据库

    package jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; imp ...

  8. Java的枚举简单应用

    /** * 请用枚举方式实现如下应用: * 客户去旅店住房, * 客户分普通客户,和vip客户,vip分白金和钻石客户 * 不同的客户有不同的折扣 * 入住的房间分单人房,双人房和套房 * 不同的房间 ...

  9. 面试官问我:看过sharding-jdbc的源码吗?我吧啦吧啦说了一通!!

    写在前面 在产品初期快速迭代的过程中,往往为了快速上线而占据市场,在后端开发的过程中往往不会过多的考虑分布式和微服务,往往会将后端服务做成一个单体应用,而数据库也是一样,最初会把所有的业务数据都放到一 ...

  10. python基础 格式化输出

    格式化输出 '%s %d %.2f' % ('Novak', 33, 1.88) 需要逗号