专栏首页小樱的经验随笔【Java学习笔记之十六】浅谈Java中的继承与多态

【Java学习笔记之十六】浅谈Java中的继承与多态

1、  什么是继承,继承的特点?

子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。

特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。

在继承关系中。父类和子类需要满足is-a的关系。子类是父类。

表示父类和子类的术语:父类和子类、超类和子类、基类和派生类,他们表示的是同一个意思。

2、  为什么需要继承?什么时候应该继承?

使用继承可以有效实现代码复用,避免重复代码的出现。

当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。

继承实现了面向对象的原则:write once,only once(编写一次、且编写一次

3、  如何实现继承?

Java语言中,用extends(扩展)关键字来表示一个类继承了另一个类。

在父类中只定义一些通用的属性和方法。

子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类的属性、重写父类的方法可以获得与父类不同的功能。

4、  什么是方法重写?

如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法。

方法重写在不同类,是实现多态的必要条件。

5、  super关键字的用法和位置,super关键字调用父类的构造方法,super关键字调用父类的方法?

在子类的构造方法中,通过super关键字调用父类的构造方法。

如果子类中重写了父类的方法,可以通过super关键字调用父类的方法。

父类:

private String name;

private String sex;

public xinxin1(String name,String sex)

{

           this.name=name;

           this.sex=sex;

}

         public void hello(){

                   System.out.println(“嗨!我是”+name+”我是”+sex+”孩”);

         }

子类:

public xinxin2(String name,String sex)

{

           //调用父类的构造方法

           super(name,sex);

}

public void hello(){

                   System.out.println(“我是新来的!”);

           //调用父类的方法

           super.hello();

}

位置注意:调用父类的构造方法的语句(super语句)必须是构造方法中的第一条语句。

因为创建对象的时候,需要先创建父类对象,再创建子类对象。

注意:创建对象时,先创建父类对象,在创建子类对象。如果没有显示调用父类的构造方法,将自动调用父类的无参构造方法。

6、  一切类的老大(祖先)Object。

所有类都直接或者间接地继承了java.lang.Object类,Object类中定义了所有的java对象都具有的相同行为,是所有类的祖先。

一个类如果没有使用extends关键字,那么这个类直接继承自Object类。

7、  什么是多态?

多态的特征是表现出多种形态,具有多种实现方式。或者多态是具有表现多种形态的能力的特征。或者同一个实现接口,使用不同的实例而执行不同的操作。

8、  为什么需要使用多态?多态的好处?

可以增强程序的可扩展性及可维护性,使代码更加简洁。

不但能减少编码的工作量,也能大大提高程序的可维护性及可扩展性。

9、  如何实现多态?

一般做法是:写一个方法,它只接收父类作为参数,编写的代码只与父类打交道。调用这个方法时,实例化不同的子类对象(new 一个对象)。

更具体的说:

(1)、子类重写父类的方法。使子类具有不同的方法实现。

(2)、把父类类型作为参数类型,该父类及其子类对象作为参数转入。

(3)、运行时,根据实际创建的对象类型动态决定使用那个方法。

在运行时,java虚拟机会根据实际创建的对象类型决定使用那个方法。一般将这称为动态绑定。   

10、多态小结:多态与继承、方法重写密切相关,我们在方法中接收父类类型作为参数,在方法实现中调用父类类型的各种方法。当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建的对象类型,调用子类中相应的方法(存在方法重写时)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 蒙特卡洛算法及其实现

    从今天开始要研究Sampling Methods,主要是MCMC算法。本文是开篇文章,先来了解蒙特卡洛算法。 Contents    1. 蒙特卡洛介绍    ...

    Angel_Kitty
  • Java学习笔记【持续更新】

    一个简单的java程序如下: class Sakura {   public static void main(String[] arges)   {     ...

    Angel_Kitty
  • hihoCoder 1039:字符消除(字符串处理)

    #1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"A...

    Angel_Kitty
  • Python 继承

    为了保证编写的代码能够同时在 Python 2.x 和 Python 3.x 运行!

    Devops海洋的渔夫
  • 面向对象——继承

    Object是默认的所有类的父类,每个类对象都可以使用像hashCode()、equals(Object obj)、toString()等这些方法。是因为它们就...

    木瓜煲鸡脚
  • overload和override

    说实话,这两个没有什么可比较的,概念相差那么大,但是很多笔试题之类的还喜欢考。只是长的像了一点而已。

    MickyInvQ
  • 子类可以继承到父类上的注解吗--有结论了

    -----------------------------------------------------------------

    lyb-geek
  • 关于JAVA你必须知道的那些事(三):继承和访问修饰符

    今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下。这一部分还是非常重要的,需要仔细思考。

    编程思录
  • 【Java】基础16:一个例子弄懂什么叫继承?

    所以动物是一个类;食草动物、食肉动物都是动物的子类;羊类、兔类是食草动物的子类;狼类、虎类是食肉动物的子类。

    刘小爱
  • 一篇文章讲清楚Java面向对象三大特性(基础篇)

    面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP...

    Java技术江湖

扫码关注云+社区

领取腾讯云代金券