Java语言滴Interface

[size=small]1[/size].相对abstract class(抽象类)来讲,interface则造出了“完全抽象的class”,丝毫不带半点实现的内容。且interface中的所有methods都是虚的空的(没有body),当然,编译器也会强迫你这样做。具体看下面代码:

interface A{
void x();//这里不需写访问权限,x()就自动成为了public void x()
String Hello();
}

1-1.interface中的方法无需声明,都会自动设为public
1-2.interface中的数据成员也变为了public static final
具体看下面代码:

class B implements A{
String str="Hello";//这里的str很自然的变成了public static final String str;
public void x(){
//……//
}
public String Hello(){
return str;
}
}

注意,当某个类(class B)实现了一个接口(interface A)时,一定要把它实现的methods(Hello())标明为public,否则编译器会报错。
[size=small]2[/size].实现Java中的"多重继承",具体看下面代码:

class Father{}
interface Human{}
interface Boy{}

class Me extends Father implements Human,Boy{}

如上,我继承(extends)自父亲,但我的身份却可以是“人类(human)”或者“男孩(boy)”。同样,在java中,只能继承一个一般的Class(non-interface即非接口类),但却可以实现多个interface,也就是说“interface让你拥有多个身份”。这当然更有利于多态的应用。
2-1.interface可以也只能是继承另一个接口,但不是class类

class A{}
abstract class B{}
interface C{}

//!interface D extends A{}
//!interface D extends B{}
interface D extends C{}//接口只能继承接口

2-2.下面说明同时实现多个接口时需要注意的事项:

interface Man{void fight();}
interface Woman{void cooking();}

class Father{
public void fight(){}
}
class Mother{
public int cooking(){return 53;}
}

class Child extends Father implements Man,Woman{
public void cooking(){}//大家注意,为什么这儿implements了Man和Woman两个interface却单单只实现了Woman的一个接口呢?
}

//!class Child1 extends Mother implements Woman{}//为什么这个会报错呢?

public class Test {
static void fighting(Man man){//这儿之所以可以用man来调用是因为下面会进行向上转型,即Man的derived class reference传到这里,下同。
man.fight();
}
static void cookings(Woman woman){
woman.cooking();
}

public static void main(String[] args) {
Child c=new Child();

fighting(c);//向上转型,因为上面接参的是Hero的base class
cookings(c);
}
}

2-2-1.class Child为什么实现了 Man和Woman 两个interface却只实现了Woman一个接口呢?
因为Child还同时继承了一个Father类,而Father中恰好有一个一模一样的void fight(),所以,在继承的同时,“爸爸替儿子”自动的实现了fight(),不用“儿子”亲自动手。
但是要注意,必须要完全相同才行!(即需要同参数列表、同返回值)
2-2-2. Child1不能再写下去是因为他所继承的Mother类的void cooking()与它所实现的Woman接口中的int cooking()产生冲突。两者名称相同,但是返回值不一样,导致编译器不知道该使用哪一个或者应该重写等,所以会报出错误。
所以需要提醒的是:尽量不要实现含同名参数的interface,或者就干脆不要写同名的函数。
[size=small]3[/size].产生常量:由于interface中的数据成员会自动成为public static final

public interface Months{
int JANURAUY=1;//再次说明,常量都要全部用大写,语义间用下划线分开如: VAL_XX
int FEBRUARY=2;
int MARCH=3;
}

使用的时候,直接 Months.JANURAUY*10就可以。另:因为interface的常量数据成员是static静态的,所以当你首次使用这个interface时,就会自动初始化里面的数据,不管你使用多少次它的数值都不会再变了

public interface Vals{
int VAL_A=(int)(Math.random()*10);
}

我们看到,VAL_A是由随机数得值的,但当你第一次使用它时,VAL_A被赋予了一个随机数3.14,但以后不管你用多少次,都只是同一个数3.14。
[size=small]4[/size].interface可以互相嵌套,既可以嵌在class中,也可以嵌在另一个interface中。
4-1.当某一个interface嵌套到了另一个interface中时,它一定会变成public,且无法标记为private
4-2.当你实现某个interface时,根本无须实现嵌套在它里面的Other interfaces
4-3.private interface是无法在它所定义的class之外被发现的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色低碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值