java中的抽象类与接口

类=属性(0/多个)+方法(0/多个—)

一个完整的类可以没有方法,但是有方法时一定要被实现,完整的类可以被实例化(new)

java中隐藏实现内部细节仅向用户显式基本功能的目的叫做java抽象,实现java抽象的方法有两种:【抽象类和接口】

  • 抽象类(0%~100%抽象):

定义:一个类有方法,但是未被实现

抽象类声明:用abstract关键字声明抽象类

public abstract class Shape{
  int area;
  public abstract void AllArea();//声明抽象方法
}

 

!含有abstract方法一定是抽象类,而含有abstract class类不一定含有abstract方法

例:

package againtry;

public abstract class Shape {
	int area;
	public abstract void allarea();
	

}

 

package againtry;

public class Rectangle extends Shape{
	int width;
	int length;
	public Rectangle(int width,int length) {
		this.width=width;
		this.length=length;
	}
	public void allarea() {
		System.out.println("计算结果为"+width*length);
	}
	//实现abstract allare方法,若无该实现,则需要将Rectangle声明为抽象类

	public static void main(String[] args) {
		Rectangle rect=new Rectangle(5,10);
		rect.allarea();

	}

}

运行结果

特点:

1.类可以有成员变量,具体方法,抽象方法,构造函数,甚至main函数

2.抽象类只能被继承,一个类继承于抽象类,就不能继承于其他类(包括抽象类)

3.子类可以继承于抽象类,但一定要实现父类的所有抽象方法,只有这样才能变成完整的类;若不能被全部实现,则该子类也必须定义为抽象类

4.抽象类不能被实例化,可以定义为引用变量

Shape s=new Circle();//Circle是引用的变量,变量可以是抽象的,对象必须是具体的

5.抽象类和抽象方法常作为系统分析和设计的工具 

  • 接口(100%抽象)

接口定义:如果一个类的所有方法都没被实现,那么这个类就是接口interface,从本质上来说,接口是特殊的抽象类。

接口声明:关键字interface声明接口

public interface CSystem{
  Client add(Client newDairy);
  Event add(Evente,Cliebt dairy);
  Event[] today();
}

注意:

1.类只可以继承(extends)一个类,但是可以实现(implement)多个接口,继承和实现可以同时存在一个类当中

2.类实现接口,就必须实现所有未实现的方法;如果没有全部实现,那只能成为一个抽象类

3.一个接口可以继承多个接口,没有实现的方法可以叠加,因为接口里的抽象方法不能被实例化,即不占用内存

4.接口中全部的方法所有的方法都是抽象,公开的【public abstract】,所有的属性都是静态的,公开的常量【public static final】,无构造函数,无main方法,但是可以定义变量,变量可以引用任何实现类的实例。

Shape s=new Circle();
package againtry;
/*
 * 实现接口
 */

public class Cat {
	public void eat() {
		System.out.println("Cat:I need to eat some fool~");
	}
	public void move() {
		System.out.println("Cat:I can move by my foot!");
	}
	public class Climb {
		public void climbtree();

	}


}

 

package againtry;

public abstract class LandAnimal implements Animals {
	public abstract void eat();
	
	public void move() {
		System.out.println("Cat:I can move by my foot!");
	}
	public class Rabbit extends LandAnimal implements Climb{
	public void Climbtree() {
		System.out.println("Rabbit:I can climb");

	}
	public void eat() {
		System.out.println("Rabbit:I can eat");
	}
}
	}
package againtry;

public interface CatFamily extends Animals,Climb  {
	/*接口中包含:
	*eat();
	*move();
	*climb();
	**/
	
	//实现CatFamily中的方法
	public class Tiger implements CatFamily{
		public void eat() {
			System.out.println("Tiger:I need to eat some fool~");
		}
		public void move() {
			System.out.println("Tiger:I can move by my foot!");
		}
		public void Climb() {
			System.out.println("Tiger:I can climb");

		}

	}

}

 

  • 抽象类域接口的异同

1.抽象类中可以有构造方法,普通成员变量,而接口中都没有

2.抽象类中可以含有非抽象方法,而接口中的所有方法都必须是抽象的

3.抽象类中的抽象方法的访问类型可以是public protected,而接口的抽象方法的类型只能是public abstract

4.抽象类中可以包含静态方法,而接口不能包含抽象方法。

 

 

 

 

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 常见问题解答 网页打开速度慢或者打不开网页? 受到多种因素的影响,对于非会员用户我们无法提供最优质的服务。 如果您希望得到最棒的体验,请至大会员页面("右上角菜单 → 大会员")根据说明操作。 请注意:受制于国际网络的诸多不确定性,我们无法对任何服务的可靠性做出任何保证。 如果出现了网络连接相关的问题,我们建议您先等待一段时间,之后再重试。 如果您在重试后发现问题仍然存在,请联系我们,并说明网络问题持续的时间。 图片下载后无法找到? 打开"右上角菜单 → 更多 → 修改下载路径",在弹出的对话框中可以看到当前图片的保存路径。 此外,由于网络因素,在保存图片之后,等待屏幕下方出现"已保存到..."后,才能在本地找到图片。 如何更改图片保存的目录? 请参见"右上角菜单 → 更多 → 修改下载路径"。 翻页不方便? 在点进某个图片后,通过在图片上向左或向右滑动,即可翻页查看下一个作品。 如何保存原图/导出动图? 长按图片/动图,在弹出的菜单中选择保存/导出即可。 输入账号密码后出现"进行人机身份验证"? 此为pixiv登陆时的验证码,请按照要求点击方框或图片。 在pxvr中注册pixiv账号后,收到验证邮件,无法访问邮件中的验证链接? 请复制邮件中的链接,打开pxvr中的"右上角菜单 → 输入地址"进行访问。 能否自动将页面内容翻译为汉语? 很抱歉,pxvr暂不提供语言翻译服务。 图片下载类型是否可以选择? 能否批量下载/批量管理下载? 已支持批量下载多图作品中的所有原图:找到一个多图作品,进入详情页面后,点击图片进入多图浏览模式,长按任意一张图片即可看到批量下载选项。 关于上述其他功能,我们...
考虑局部遮阴的光伏PSO-MPPT控制模型(Simulink仿真实现)内容概要:本文介绍了基于Simulink仿真实现的考虑局部遮阴的光伏PSO-MPPT控制模型,旨在通过粒子群优化(PSO)算法解决光伏发电系统在局部阴影条件下最大功率点跟踪(MPPT)的效率问题。文档不仅提供了该模型的技术实现方法,还列举了大量相关的MATLAB/Simulink仿真资源,涵盖电力系统、智能优化算法、机器学习、路径规划、信号处理等多个科研方向,适用于复现高水平期刊论文和开展创新性研究。文中强调科研需逻辑缜密、善于借力,并提倡结合实际仿真理论分析以提升研究深度。 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事光伏系统优化、智能算法应用或相关领域研究的研发人员及硕博研究生。 使用场景及目标:①研究局部遮阴下光伏系统MPPT控制策略的性能提升;②利用PSO等智能优化算法解决非线性、多峰值优化问题;③复现SCI/EI级别论文中的MPPT控制模型;④开展光伏系统建模仿真教学或项目开发。 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码模型文件,按照目录顺序逐步学习,重点理解PSO算法在MPPT中的应用机制,并通过修改参数、对比实验等方式深入掌握仿真细节,提升工程实践科研创新能力。
内容概要:本文档是美国国家标准技术研究院(NIST)发布的特殊出版物800-38B,题为《分组密码运行模式建议:用于认证的CMAC模式》。该文档详细规范了一种基于对称密钥分组密码的消息认证码(MAC)算法——CMAC(Cipher-based Message Authentication Code)。CMAC用于确保数据的真实性完整性,适用于需要高安全性的信息系统。文档介绍了CMAC的工作机制,包括子密钥生成、MAC生成验证的具体步骤,并提供了相关的数学符号、定义和操作说明。此外,还讨论了MAC长度选择、密钥使用范围、重放攻击防护等安全性相关议题,并给出了实际应用中的参数建议和限制条件。 适合人群:从事信息安全、密码学研究或系统开发的专业技术人员,尤其是涉及加密模块设计、合规性评估或联邦信息系统安全实施的工程师和研究人员。 使用场景及目标:①为实现符合NIST标准的认证机制提供权威指导;②支持密码模块验证计划(CMVP)下的合规性测试;③帮助开发者正确实现CMAC算法并合理配置MAC长度密钥使用上限,以抵御猜测攻击和碰撞攻击。 阅读建议:此文档属于技术规范类文件,应结合FIPS 197(AES)、SP 800-67等配套标准一同参考,重点关注第6节算法流程及附录中的安全参数建议,在实际部署时需严格遵循文中“shall”规定的强制性要求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值