1. 继承的好处:

  1.提高代码复用性。

  2.让类与类之间产生关系,为面向对象的第三大特征 多态 提供了前提

2.java中支持单继承,不直接支持多继承,但对c++中多继承进行了改良。java通过多实现来解决,一个类可以实现多个接口。

  单继承:一个子类只能有一个直接父类。

  多继承:一个子类可以有多个直接父类,java中不允许,但进行了改良。因为多个父类如果有同名的成员,多继承会产生调用的不确定性。

3. 当本类的成员和局部变量重名,用this. 区分

  当子类的成员和父类成员重名,用super. 区分

 this代表一个本类对象的引用,super代表父类空间。 

4.在子类构建对象时,父类的构造函数也运行了,为什么?

  原因是子类构造函数的第一行有一个默认的隐式语句,super(),调用的就是父类空参的构造函数。如果父类没有空参的构造函数,就会报错,所以这时在子类中就要显示的调用比如:super("aa")

5.子类的实例化过程:

子类的实例化过程:子类中所有的构造函数默认都会去调用父类空参的构造函数,因为子类构造函数的第一行都有一个隐式的super。

为什么子类实例化过程中要访问父类的构造函数?因为子类继承了父类,获得了父类中的内容(属性),所以在使用父类内容之前 ,要先看父类是如何对自己的内容进行初始化的。所以就在子类构造函数中加入super语句。如果父类中没有定义空参的构造函数,那子类的构造函数中必须用super()指定参数来明确调用父类的哪个构造函数,否则报错。

注意:super语句必须定义在子类构造函数的第一行。因为父类的初始化要先完成。

如果子类的某个构造函数的第一行调用了this()即调用子类自己的构造函数,这时候,就不能在该构造函数内调用super,因为this和super都必须放第一行,

子类调用的this构造函数里会调用super,无论如何,子类都会调用父类的构造函数。

6. 子类构造函数调用父类的super时,子类还没有初始化,子类的值仍然是默认初始化值。父类初始化完后才初始化子类对象。

7.final修饰符,修饰类,方法,变量

  继承的弊端:打破了封装性。不想被继承的类,可以使用final修饰。

  final关键字:

  1.final是一个修饰符,可以修饰类,方法,变量。

  2.final修饰的类不能被继承。

  3.final修饰的方法不能被重写。

  4.final修饰的变量是一个常量,只能被赋值一次。

8. 抽象类

  特点:

  1。方法只有声明,没有实现时,就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中。该类也必须被abstract修饰

  2.抽象类不能被实例化。因为调用抽象方法没意义,因为抽象方法没方法体。无法运行。

  3.抽象类的子类必须重写了父类的所有的抽象方法,子类才可实例化,否则子类仍然是抽象类,也不能实例化。

  abstract class Demo

  {

    abstract void show();//没有方法体{}

     void show2()//非抽象方法

    {

    }

  }

  

  抽象类的几个问题:

  1.抽象类中有构造函数吗?

    有,抽象类中的构造函数用于给子类对象初始化。

  2.抽象类中可以不定义抽象方法吗?

    可以,但是比较少见,目的就是不让该类创建对象。AWT类就是这种

  3.抽象关键字abstract不可以和哪些关键字共存?

    private 不行:抽象方法要被重写,私有的方法子类重写不了。

    static   不行:静态抽象方法可以被类名调用,抽象方法调用没意义。

    final     不行:final修饰的类不能被继承,final修饰的方法不能被重写。

4.抽象类和一般类的异同点?

    相同点:都是用来描述事物,都定义了成员

    不同点:

      一般类有足够的信息描述事物,抽象类描述信息不足。

      一般类中不能定义抽象方法。抽象类中可以定义抽象方法,也可以定义非抽象方法。

      一般类可以被实例化,抽象类不能被实例化。

  5.抽象类一定是个父类吗?

    是的。因为需要子类覆盖(重写)其中的抽象方法,才可以对子类实例化。

9.接口 interface

  当一个抽象类中的所有方法都是抽象的时候,可以用接口来定义。

  interface Demo

  {

    abstract void show1();

    abstract void show2();  

  }

接口编译完生成的依然是.class文件,java中全部是用class文件来表示字节码。

接口中成员:都有固定的修饰符

  1.全局常量 public static final      ----接口中这三个都可以不显示写出,编译的时候也会加上。建议都写上

  2.抽象方法 public abstract        ----接口中 可以不显示写出,编译的时候也会加上。建议都写上

由此得出结论,接口中的成员都是公共的public,所以接口中的成员可以不显示写出修饰符

  interface Demo

  {

    int num=4;--- public static final  int num=4;

  void show();--- public abstract void show();

  void show();--- public abstract void show();

  }

接口不能实例化,必须有实现该接口的子类重写了所有的方法后,该子类才能实例化,如果子类没有全部重写所有方法,该子类是抽象类,不能实例化。

在java中不直接支持多继承,java将多继承机制进行了改良,在java中变成了多实现。一个类可以实现多个接口。

10. 接口与抽象类异同点:

    相同点:都是不断向上抽取而来,描述都不够具体。

    不同点:

      1.抽象类需要被继承,接口需要被实现

      2.抽象类中可以定义抽象方法和非抽象方法,子类继承后可以直接使用非抽象方法,接口中必须全部是抽象方法,必须由子类全部重写。

       3.抽象类的继承是 is a 关系,接口的实现是 like a 关系。

JAVA-面向对象2--继承的更多相关文章

  1. Java面向对象之继承(一)

    目录 Java面向对象之继承 引言 继承的特点 语法格式 父子类的关系 继承要点 重写父类方法 继承中的构造器 继承中的super关键字 ... Java面向对象之继承 继承是面向对象的第二大特征,是 ...

  2. Java面向对象的继承

    继承也是面向对象的又一重要特性,继承是类于类的一种关系,通俗来说狗属于动物类,那么狗这个类就继承了动物类 java中的继承是单继承的,一个类只能继承与一个父类 子类继承父类之后,子类就拥有了父类的所有 ...

  3. JAVA面向对象之继承

    继承: 子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 class 子类 extends 父类 { } 继承的特性: 子类拥有父类非private的属性,方法. 子类可以拥有自己 ...

  4. Java:[面向对象:继承,多态]

    本文内容: 继承 多态 首发时期:2018-03-23 继承: 介绍: 如果多个类中存在相同的属性和行为,可以将这些内容抽取到单独一个类中,那么多个类(子类)无需再定义这些属性和行为,只要继承那个类( ...

  5. Java面向对象之继承extends 入门实例

    一.基础概念 (一)继承的好处: 1.继承:提高了代码的复用性. 2.让类与类之间产生了关系,给多态这个特征提供了前提. (二)继承的种类: 1.单继承:一个类只能有一个父类. 2.多继承:一个类可以 ...

  6. Java面向对象_继承——基本概念以及管理化妆品实例分析

    一.继承的基本概念: 1.继承是面向对象三大特征之一 2.被继承的类成为父类(超类),继承父类的类成为子类(派生类) 3.继承是指一个对象直接使用另一个对象的属性和方法 4.通过继承可以实现代码重用 ...

  7. Java面向对象(继承、抽象类)

    面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...

  8. java面向对象之 继承 Inheritance

    对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从它的基类那里继承方法和实例变量,并且类可以修 ...

  9. Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类

    01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...

  10. Java面向对象之继承,方法重写,super关键字,员工类系列继承题

    在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 继承的好处 1.继承的出现提高了代码的复用性,提高软件开发效率. 2.继承 ...

随机推荐

  1. Python 中的GIL

    GIL:Global Interpreter Lock,     全局解释器锁定,是指python虚拟机在执行多线程程序时,任一时刻只有一个线程在执行,这使得多线程程序无法充分利用CPU.对于一般的多 ...

  2. delphi edit 中undo 和clearundo 复制粘贴等总结

    edit 和memo都有undo功能, Undo:恢复到改动前. ClearUndo:撤销掉Undo缓冲区的内容,则将无法恢复到改动前的 从该文本框的撤销缓冲区中清除关于最近操作的信息,根据应用 程序 ...

  3. NOIP2010-普及组复赛-第四题-三国游戏

    题目描述 Description 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏.  在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不 ...

  4. A - LCM Challenge

    A - LCM Challenge Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others ...

  5. c/c++ 浮点型处理

    #include <stdio.h> #include <iostream> #include <string> #include <string.h> ...

  6. 一个初学者的辛酸路程-了解Python-2

    前言 blog花了一上午写的,结果笔记本关机了,没有保存,找不到了,找不到了啊,所以说,你看的每一篇blog可能都是我写了2次以上的--.哎!! 代码改变世界,继续......... Python基础 ...

  7. 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  8. android Bind机制(二)

    1.binder通信概述 binder通信是一种client-server的通信结构,    1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用:    2 ...

  9. cocoaPods的安装方法

    1.打开终端 2.先升级Gem sudo gem update --system 3.切换cocoapods的数据源 [先删除,再添加,查看] gem sources --remove https:/ ...

  10. XBOX360 硬盘玩游戏

    首先PC端需要到flashFXP这个软件,因为级别不够上传不了就发个下载网站各位自己下一下吧.http://www.oyksoft.com/soft/14875.html#oyksoftdown 好了 ...