Java---继承与多态

一、继承

1、什么是继承
基于已有的设计创造新的设计,就是面向对象程序设计中的继承。我们把用来做基础派生出其他类的那个类叫做父类,派生出的新类叫做子类,可以简单以父子关系理解,子继承父的一切特质而又有自己多出的独特地方,我们在Java中用关键字extends表示这种继承关系

2、格式:

Class ThisClass extends SuperClass {    
    //...
}

3、注意

  • 子类的对象可以被看作是父类的对象
  • Java的继承只允许单继承,即一个类只能有一个父类
  • 子类从父类得到了除构造方法外的所有成员,包括变量和方法,但是有些变量和方法虽然得到但不一定可以访问,要看它的访问修饰符是什么。

4、初始化和参数传递

  • 在构造一个子类的对象时,父类的构造方法也是会被调用的,而且父类的构造方法在子类的构造方法之前被调用。
  • super:一,可以用来调用父类的构造方法,如果父类构造方法有参数,可以把参数传递给父类的构造方法,这个super()必须写在构造方法的第一行,而且每个构造方法只能有一个super();二,如果子类中定义了和父类同名的方法,我们可以用super来表达我们需要调用父类的那个方法。

二、多态性

多态:一般指一个程序中同名的不同方法共存的情况,多态性体现在方法覆盖、方法重载和向上类型转换。

1、覆盖
方法覆盖:同名同参不同类,父子类之间。
对于外界来说,子类并没有增加新的方法,仍然是在父类中定义过的那个方法,不同的是,这是一个新版本,通过子类对象调用这个方法,执行的是子类自己的方法

2、重载
方法重载:同名同类不同参,一个类内部之间
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。我们在使用时可以通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法

2、向上类型转换
(1)向上类型转换:在Java语言中,子类的对象总可以被看作是父类的对象,而把子类的对象当作父类对象来使用就称为向上类型转换。
(2)格式:假设Book为父类,Dictionary为子类

 Book xinhua = new Dictionary();

3、绑定

  • 绑定表明了调用一个方法的时候,特别当这个方法在父类-子类关系中存在覆盖现象时,我们使用的是哪个方法。
  • 绑定分为静态绑定和动态绑定,静态绑定在编译的时候就确定了,动态绑定在运行的时候根据变量当时实际所指的对象的类型动态地决定调用的方法。静态绑定的优点是效率高,动态绑定效率不高,但是更灵活,而且带来了多态性。
  • 除了final方法,Java中的所有方法都是动态绑定的。

三、final

1、final修饰的变量
final是“不可修改”的意思,final的成员变量表明这个变量只能被赋值一次,而不是说它是静态常量

2、final修饰的方法
子类在继承父类的时候,父类中的final方法是不能被覆盖的;private的方法是final的

3、final修饰的类是不能被继承的,在final类中所有方法都是final的。

四、抽象与接口

1、抽象类与抽象方法
抽象类表达的是一种概念,一种共同属性的抽象集合,用abstract关键字进行定义,其作用仅仅是表达接口,而不是具体的实现细节。抽象类中可以存在抽象方法,抽象方法是不完全的,它是一个方法签名而完全没有方法体。

抽象类格式:

abstract class Shape{   
    //
}

抽象方法格式:

abstract void draw();

注意:如果一个类有了一个抽象的方法,这个类就必须声明为抽象类;
如果父类为抽象类,那么子类必须覆盖所有在父类中的抽象方法,否则子类也将成为一个抽象类。

2、接口:完全抽象的类
接口是完全抽象的类,完全抽象在:接口所有的方法都是没有方法体的,而且都是public abstract类型的;接口中所有成员变量都是public static final的变量,而且必须经过定义初始化,因为所有变量都必须在编译的时候有确定值。

当类从接口得到继承的时候,Java用“实现”来描述这个动作,实现接口的类必须覆盖接口中的所有方法,否则这个类就成为了抽象类。

Java不允许多继承,但允许一个类实现多个接口,也允许一个接口从多个接口得到继承

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值