接口、继承与多态

一、类的继承
方法的重写:
方法的重载:方法名相同,方法参数不同(类型或者个数不同)。
在子类中保留父类的方法名称,重写方法的实现内容,方法权限或者修改方法的返回值。
特殊的重写-重构:子类与父类的方法返回值、方法名称、参数类型及个数完全相同,唯一不同的就是方法实现内容;这种重写的方式被称为重构。
当重写父类方法时,不能降低方法修饰权限范围,只能从小的范围到大的范围改变。
重写方法的返回值类型必须是父类中同一方法的子类。
被定义为final的类不能被重写。

在继承机制中,创建一个子类对象,将包含一个父类子对象,这个对象与父类创建的对象是一样的;两者区别在于后者来自于外部,前者来自于子类对象的内部。当实例化子类对象时,父类也相应的实例化;因为创建子类调用构造方法时,会自动调用父类的无参构造方法;并且是从顶级父类开始依次往下调用。如C继承B,B继承A;创建C对象时,构造方法调用顺序为:A---B---C;所以在实例化子类对象之前,父类已经完成实例化操作。

子类可以继承父类原有的属性和方法,也可以增加父类所不具备的属性和方法,或者直接重写父类中的某些方法。

子类没有权限调用父类中被修饰为private的方法,只可以调用父类中被修饰为public或protected的成员方法。

 

二、Object类
在java中,所有的类都直接或间接的继承了java.lang.Object类。
Object中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为他们被定义为final了


三、对象类型的转换
向上转型:把子类对象赋值给父类类型的变量。
向下转型:把父类对象赋值给子类类型变量时,必须使用强制类型转换;将父类对象强制转换为某个子类对象,这种方式称为显示类型转换。


四、1使用instanceof操作符判断对象类型
在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常;这就需要使用instanceof关键字来判断是否一个类实现了某个接口或一个对象是否属于一个类。


五、方法的重载
重载条件:
1. 方法名相同
2. 参数类型或参数个数不同
返回值类型不同不足以构成重载,还需要具备以上两点。
定义不定长参数满足重载,由于它的参数是不定长的,所以满足根据参数个数分区重载的条件。


六、多态
定义在父类中的多个子类共享的方法,父类的参数引用指向子类对象。
子类对象指向父类对象(向上转型);在父类中定义子类可以共用的方法,各个子类可以通过自己的参数去实现该方法;如平行四边形和正方形类都可以调用四边形类的方法。


七、抽象类与接口
抽象类:使用关键字abstract定义的类;该类不能实例化对象。
抽象方法:使用关键字abstract定义的方法,这个方法本身没有任何意义,除非它被重写,只要类中有一个抽象方法,此类就被标记为抽象类。
抽象类被继承后继承它的类需要实现抽象类中的所有抽象方法。


八、接口
接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。
接口使用interface关键字进行定义;一个类实现一个接口使用implements关键字,实现后需要实现接口中所有的方法。
在接口中定义的任何字段都自动是public和final的。
在接口中定义的方法必须被定义为public或abstract形式,其他权限修饰符不被java编译器认可,即时不声明public,他也是public。

java中类是单继承的,但是接口可以多继承。

在java中无论是将一个类向上转型为父类对象,还是向上转型为抽象父类对象,或者向上转型为该类实现接口都可以正常操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值