接口,继承,多态学习笔记

10 接口,继承,多态
10.1类的继承
继承使整个程序框架具有一定的弹性,在程序中复用一些已经定义完善的类可以减少软件开发的周期,亦可以极高软件的可维护性和可扩展性。
基本思想:基于某个父类进行扩展。得到一个新的子类。子类可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的某些方法
继承方法:
用extends关键字来标识两个类的继承关系
继承不仅仅可以拓展父类的功能还能重写父类的方法,重写可以更改父类方法中的实现内容,存储权限,返回值类型;但保留父类的名称
10.2Object类
在java中所有的类都继承了Object类,也就是说他是所有类的父类。在创建一个类时除非已经指定了继承什么类,否则他就是继承Object类。由于所有的类都是继承与Object类所以可以省略extends
Object关键字,由于所有类都是继承与Object类,所以在所有类上都可以重写object类的方法。
Object类中的方法主要包括clone(),finialize(),equals(),toString()等方法,其中最常用的方法是equals(),toString()方法。
[1]getClass()方法
getClass()方法是Object类定义的方法,它会返回对象执行是的Class实例,然后使用此实例调用getClass()方法可以取得类的名称。
语法如下:
getClass().getname();
可以将getClass()方法与toString()方法联合使用
[2]toString()方法
toString()方法的功能是将一个对象返回为字符串的形式,他会返回一个String实例,在实际使用中通常重写toString()方法,为对象提供一个特定的输出模式,当此类转化为字符串或与字符串连接时,将会自动调用重写的toString()方法。
[3]equals()方法
equals()方法比较的是两个对象的内容"=="比较的是引用是否相同
10.3 对象类型的转换
10.3.1 向上转型
定义:子类对象赋值给父类类型的变量,通俗地说就是是将子类对象转为父类对象。子类可以调用父类的对象
注意事项:
1、向上转型后,子类单独定义的方法会丢失,即调用子类的方法会报错
2、如果子类中重写了父类的方法,那么调用这个方法的时候,将会调用子类中的方法
向上转型的意义:
减少重复代码
实例化的时候可以根据不同的需求实例化不同的的对象,实现参数统一化。
10.3.2 向下转型
将较抽象的类转化为较具体的类;
在程序中使用向下转型技术时,必须使用显式类型转换,向编译器指明要将父类对象转化为哪一种类型的子类对象
10.4使用instanceof操作符判断对象类型
当在程序中执行向下转型操作时,若父类不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下执行时要判定父类对象是否为子类的实例,通常使用instanceof操作符来完成,可以用instanceof来判断是否一个类实现了莫格接口,亦可以用其来判断一个实例对象是否属于一个类
语法格式:
myobject instanceof ExampleClass
myobject表示莫雷对象的引用
ExampleClass:某个类
使用instanceof操作符返回值类型为布尔值;若返回值为true,说明myobject对象为ExampleClass的实例对象,反之则不为;
instanceof为java语言的关键字,在java语言中所有的关键字都为小写
10.5方法的重载
指的是在同一个类中允许存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可
构成重载的几个特征
参数类型不同
参数顺序不同
参数个数不同
以上均为一个同一个方法名下
注意:虽然在方法的重载中可以使两个方法返回值类型不同,但只有返回值并不足以区分两个方法的重载,还需要通过参数的个数一级惨书的类型来设置
补丁长参数的的语法如下:
返回值 方法名 (参数的数据类型 ………参数名称)
10.6多态
利用多态可以使程序具有良好的拓展性,并可以对所有类对象进行通用的处理
多态是同一个行为具有多个不同表现形式或形态的能力。
多态的优点

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性
    多态存在的三个必要条件
    继承
    重写
    父类引用指向子类对象:Parent p = new Child();
    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
    多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
    多态的实现方式
    方式一:重写:
    这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。
    方式二:接口
  7. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
  8. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。具体可以看 java接口 这一章节的内容。
    方式三:抽象类和抽象方法
    10.7 抽象类与接口
    10.7.1抽象类
    在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理,在java中设置抽象类不可以实例化对象
    关键字为abstract
    语法如下:
public abstract class Test{
    abstract void testAbstract();//定义抽象方法
}

10.7.2 接口
接口的简介
接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中所使用的方法都没有方法体。
接口使用interfance关键字进行定义,语法如下:

public interfance drawTest{
    void draw();
}

接口的继承使用implements关键字,语法如下:

class 类名 impltments 接口名{
    ......//
}

在接口中定义的任何字段都自动是static和final的
在java中接口可以实现多重继承,语法如下:
class 类名 implements 接口一,接口2,…,接口n

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值