Java----多态+抽象类+抽象方法+接口

Java基础创作日记 Day05
时间:2021年2月7日下午 阴
前天的总结少了点东西,今天补充上
现在是2021年2月8日 晚上,摸了一天鱼,今晚补完

抽象方法+抽象类+接口

抽象方法

当我们创建一个父类,父类的一些方法需要后代进行重写,此时父辈不需要写入任何代码,此时我们就可以把这些方法不写方法体,设置为抽象方法,然后用后代来重写这个方法
语法:
abstract void 方法名();

抽象类

含有抽象方法的类必须要用abstract修饰,用abstract修饰的类叫做抽象类,抽象类可以不含有抽象方法
语法:abstract class 类名{}
如:
在这里插入图片描述
抽象类不能被实例化,他需要被继承,然后由后代来实现,后代可以实例化
后代必须实现抽象类中的抽象方法

接口

当一个抽象类中的所有方法都是抽象的则可以把他定义成一个接口
接口中可以不含有抽象方法
需要用interface关键字
语法:interface 类名{}

实现接口的方法

和后代实现抽象方法不同的是,实现接口需要用implements关键字,而不是extends继承
语法:class 类名 implements 接口名{}
如:在这里插入图片描述
同样,实现接口的类必须实现接口中的所有抽象方法

接口中我们设置的变量,会自动默认使用public static final来修饰

用抽象类实现接口的时候,可以不实现接口中的所有抽象方法
一个类可以同时实现多个接口
如:
在这里插入图片描述
中间用逗号隔开

而且,接口中的方法和变量我们不用加abstract修饰符,因为系统会自动默认其中的方法用abstract修饰,变量默认使用public abstract来修饰

接口作用和理解

可以类比我们现实中的例子
如USB接口:
接口可以用来实现一个大种类的各种细化的功能,可以类比于电脑上的USB接口,我们先来分析这种的USB接口的工作原理,首先提供一个共用的接口,里面提供固定的线,来使开发商根据对应的线来实现和接口兼容的产品,比如鼠标、移动磁盘,这两个都可以正确的兼容电脑上的USB接口,他们可以为电脑提供不同的功能。
类比于代码中的接口:
我们代码接口中的几个抽象方法就类似于USB接口中的线,这就是创建接口,我们可以根据这些抽象方法来实现各种功能,来提供给其他的对象使用,这就是实现接口。
接口也可继承其他的接口

多态

什么是多态?

代码中,在同一个方法中,由于传入参数类型的不同而导致执行效果各异的现象就是多态
在代码中的展现方式:
首先,在Java中为了实现多态,允许一个父类类型的变量来引用一个子类类型的对象。如:
在这里插入图片描述
然后,我们定义一些子类来实现父类的一些方法,然后在主函数中创建一个接受父类对象参数的方法,方法中是要实现的父类方法,然后传入参数,代码会根据传入参数引用对象的不同来进行不同的实现方法

多态的实现

例:
在这里插入图片描述
我们先写一个接口,来写入抽象方法,然后写两个子类来对抽象方法进行不同的实现,然后在main中用父类类型来引入两个子类的对象,然后创建一个静态函数接收引用子类对象的父类类型变量,其中调用父类的抽象方法,然后我们传入参数,可以看到,传入不同对象类型的变量,会变现出对应动作

对象类型转换的注意事项

因为在多态中涉及到将子类对象当做父类类型使用的情况,所有会有一些注意事项

  1. 将子类对象当做父类使用时不需要任何显式的声明,直接父类类名 变量名=new 子类的构造函数
  2. 引用子类的父类类型变量可以调用父类中的方法,但是,子类中的方法他不能调用
instanceof

作用:判断一个对象是否是某个类(或接口)的实例或者其子类的实例
用法:
对象(或者对象引用变量) instanceof 类(或接口)
如:
在这里插入图片描述

接口的再理解和使用

接口的作用就是把使用接口的类和实现接口的类分开,实现接口的类不必要关心哪个类去使用,而使用接口的类也不用关心哪个类实现的接口,由接口将他们联系在一起。
接口一般和多态联合起来使用,接口重要的特征是实现了多样性,接口可以使多个完全不相干的类产生以多态为基础的联系。

一个正确使用接口的例子

还是上面USB接口的例子:
我们现在有两样东西,1.一个可用于USB接口上的电子产品 2.一个主板
我们要把这个东西安装到主板上,而且主板要准确的获得到电子产品的名称和用法
第一步:
设计USB接口(就是规定一下USB接口该实现的功能)

  1. 可以展现电子产品的名称
  2. 可以展现电子产品的功能
interface USB
{
	String Name(); //展现名称
	void function(); //展现功能
}

第二步:
根据USB接口设置电子产品

class electronic_product implements USB
{
	private String name="我可以是鼠标可以是键盘"; //电子产品的名称属性
	void setName(String name){  //可设置对象的名称
		this.name=name;
	}
	public void function(){   //电子产品的功能
		System.out.println("我可以打字也可活动光标");
	}
	public String Name(){   //可以展现电子产品的名称
		return name;
	}
};

第三步:
创建主板(用于使用USB接口)

class main_board
{
	USB usb;	//在主板上创建使用USB的位置
	void setVidioCard(USB usb){
	//把USB接口连线到主板中,使其可以使用,把我们接入的电子产品传入到形参中,即,把电子产品和主板连接起来
	//也是多态的一种使用
		this.usb=usb;
	}
	void run(){ //开机运行
		System.out.println("开机");
		System.out.println(usb.Name());	//展现电子产品的名称
		usb.display();	//展现电子产品的功能
		System.out.println("成功运行");
	}
}

以上,主板在使用的时候只需要考虑接口中含有的方法,然后电子产品在创建的时候,也只需要考虑接口中含有的方法就行。
简单来说,接口起到了链接两个类的作用,使Java更具有多样性。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值