随笔——java中的接口、继承和多态

一、多态

Java中的多态体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。
举个例子,一个Child类,继承与Father类,那么这个Child类的实现类,既可以赋值给一个Child类型的引用,也可以赋值给一个Fatcher类型的引用。
所以,多态的表现就是父类的引用指向的是子类对象。
多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。

二、抽象类

Java中定义抽象类用的关键字是abstract,抽象类是不可以实例化的。在Java中使用多态的时候,并不需要父类可以实例化,只需要子类可以实例化,也就是只需要子类对象。
由于抽象类只能被继承,子类必须重写父类的所有抽象方法,即使子类不需要,也必须重写。

三、接口

接口用关键字interface来定义,也可以将接口看作是抽象类的延伸,可看作纯粹的抽象类。
但是接口中的方法,子类可以选择性的实现。

四、接口与继承

Java中不允许多重继承,即不允许一个子类同时继承一个或多个父类(即同时extends多个类)。但是可以使用接口实现多个(即可以同时implements多个接口,同时实现多个接口)。
这就是多重继承。
多重继承语法:
*class 类名 implements 接口1,接口2,...,接口n *

1、一个类只能继承一个类:class A extends B{}

2、一个类可以实现多个接口:class A implements B,C,...{}

3、一个接口可以继承多个接口:interface intf1 extends intf2,intf3,...{}

4、在继承类的同时也可以继承接口:class A extends B implements intf1,intf2,...{}

五、多态的使用方式

多态的使用格式一般为:
父类类型 变量名 = new 子类类型();
变量名.方法名();

1.普通类多态定义的格式
父类 变量名 = new 子类();
如: class Father {}
class Child extends Father {}
//类的多态使用
Father father = new Child();

2.抽象类多态定义的格式
抽象类 变量名 = new 抽象类子类();
如: abstract class Father {
public abstract void method();
}
class Child extends Father {
public void method(){
System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Father father = new Child();

3. 接口多态定义的格式
接口 变量名 = new 接口实现类();
如: interface Father {
public abstract void method();
}
class Child implements Father {
public void method(){
System.out.println(“重写接口抽象方法”);
}
}
//接口的多态使用
Father father = new Child();

注意事项
同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。

Person p1 = new Student();
Person p2 = new Teacher();
p1.work(); //p1会调用Student类中重写的work方法
p2.work(); //p2会调用Teacher类中重写的work方法
当变量名指向不同的子类对象时,由于每个子类重写父类方法的内容不同,所以会调用不同的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值