当前位置: 首页 > news >正文

武汉网站推广费用宁波seo优化服务

武汉网站推广费用,宁波seo优化服务,江苏茂盛建设有限公司网站,怎样编写网站抽象类和接口的对比 抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。 从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。 相同点 接口和抽象类都不能实例化都位于继承的顶端…

抽象类和接口的对比

抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。

从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

相同点

  • 接口和抽象类都不能实例化
  • 都位于继承的顶端,用于被其他实现或继承
  • 都包含抽象方法,其子类都必须覆写这些抽象方法

不同点

抽象类

接口

抽象类使用abstract关键字声明

接口使用interface关键字声明

子类使用extends关键字来继承抽象类。

如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现

子类使用implements关键字来实现接口。它需要提供接口中所有声明的方法的实现

抽象类可以有构造器

接口不能有构造器

访

抽象类中的方法可以是任意访问修饰符

接口方法默认修饰符是public。并且不允许定义为 private 或者protected

一个类最多只能继承一个抽象类

一个类可以实现多个接口

抽象类的字段声明可以是任意的

接口的字段默认都是 static 和 final的

普通类和抽象类有哪些区别?

普通类不能包含抽象方法,抽象类可以包含抽象方法。

抽象类不能直接实例化,普通类可以直接实例化。

抽象类能使用 final 修饰吗?

不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承, 这样彼此就会产生矛盾,所以 final 不能修饰抽象类,如下图所示,编辑器也会提示错误信息:

抽象类必须要有抽象方法吗?

不需要,抽象类不一定非要有抽象方法。

示例代码:

abstract class Cat {public static void sayHi() {System.out.println("hi~");}
}

上面代码,抽象类并没有抽象方法但完全可以正常运行。

什么是接口?为什么需要接口?

接口就是某个事物对外提供的一些功能的声明,是一种特殊的java类,接口弥补了java单继承的缺点

接口有什么特点?

  • 接口中声明全是public static final修饰的常量
  • 接口中所有方法都是抽象方法
  • 接口是没有构造方法的
  • 接口也不能直接实例化
  • 接口可以多继承

接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?

答:接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。

一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制?

答:可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。

内部类

什么是内部类?

在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。

内部类的分类有哪些

内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。

静态内部类

定义在类内部的静态类,就是静态内部类。

 public class Outer {private static int radius = 1;static class StaticInner {public void visit() {System.out.println("visit outer static variable:" + radius);}}}

静态内部类可以访问外部类所有的静态变量,而不可访问外部类的非静态变量; 静态内部类的创建方式,new 外部类.静态内部类(),如下:

1 Outer.StaticInner inner = new Outer.StaticInner();

2 inner.visit

成员内部类

定义在类内部,成员位置上的非静态类,就是成员内部类。

public class Outer {private static int radius = 1;private int count =2;class Inner {public void visit() {System.out.println("visit outer static variable:" + radius);System.out.println("visit outer variable:" + count);}}}

成员内部类可以访问外部类所有的变量和方法,包括静态和非静态,私有和公有。成员内部类依赖于外部类的实例,它的创建方式外部类实例.new 内部类(),如下:

 Outer outer = new Outer();Outer.Inner inner = outer.new Inner();inner.visit();
局部内部类

定义在方法中的内部类,就是局部内部类

public class Outer {private int out_a = 1;private static int STATIC_b = 2;public void testFunctionClass(){int inner_c =3;class Inner {private void fun(){System.out.println(out_a);System.out.println(STATIC_b);System.out.println(inner_c);}}Inner inner = new Inner();inner.fun();}public static void testStaticFunctionClass(){int d =3;class Inner {private void fun(){// System.out.println(out_a); 编译错误,定义在静态方法中的局部类不可以访问外部类的实例变量System.out.println(STATIC_b);System.out.println(d);}}Inner inner = new Inner();inner.fun();}}

定义在实例方法中的局部类可以访问外部类的所有变量和方法,定义在静态方法中的局部类只能访问外部类的静态变量和方法。局部内部类的创建方式,在对应方法内,new 内部类(),如下:

 public static void testStaticFunctionClass(){class Inner {}Inner inner = new Inner();}
匿名内部类

匿名内部类就是没有名字的内部类,日常开发中使用的比较多。

 public class Outer {private void test(final int i) {new Service() {public void method() {for (int j = 0; j < i; j++) {System.out.println("匿名内部类" );}
}
}

除了没有名字,匿名内部类还有以下特点:

  • 匿名内部类必须继承一个抽象类或者实现一个接口。
  • 匿名内部类不能定义任何静态成员和静态方法。
  • 当所在的方法的形参需要被匿名内部类使用时,必须声明为 final。
  • 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方 法。

匿名内部类创建方式:

 new 类/接口{//匿名内部类实现部分}

内部类的优点

我们为什么要使用内部类呢?因为它有以下优点:

  • 一个内部类对象可以访问创建它的外部类对象的内容,包括私有数据!
  • 内部类不为同一包的其他类所见,具有很好的封装性;
  • 内部类有效实现了“多重继承”,优化 java 单继承的缺陷。
  • 匿名内部类可以很方便的定义回调。

内部类有哪些应用场景

  1. 一些多算法场合
  2. 解决一些非面向对象的语句块。
  3. 适当使用内部类,使得代码更加灵活和富有扩展性。
  4. 当某个类除了它的外部类,不再被其他的类使用时。

局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?它内部原理是什么呢?

因为生命周期不一致, 局部变量直接存储在栈中,当方法执行结束后,非final的局部变量就被销毁。而局部内部类对局部变量的引用依然存在,如果局部内部类要调用局部变量时,就会出错。加了final, 可以确保局部内部类使用的变量与外层的局部变量区分开,解决了这个问题。

内部类相关,看程序说出运行结果

public class Outer {private int age = 12;class Inner {private int age = 13;public void print() {int age = 14;System.out.println("局部变量:" + age);System.out.println("内部类变量:" + this.age);System.out.println("外部类变量:" + Outer.this.age);}}public static void main(String[] args) {Outer.Inner in = new Outer().new Inner();in.print();}}

运行结果:

局部变量:14

内部类变量:13

外部类变量:12

Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?

答:可以继承其他类或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和回调。

内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?

答:一个内部类对象可以访问创建它的外部类对象的成员,包括私有成员。


文章转载自:
http://biffin.hjyw.cn
http://shrive.hjyw.cn
http://skirl.hjyw.cn
http://unbaptized.hjyw.cn
http://persia.hjyw.cn
http://ordinant.hjyw.cn
http://unsalted.hjyw.cn
http://oximeter.hjyw.cn
http://tandem.hjyw.cn
http://hydrothoracic.hjyw.cn
http://boar.hjyw.cn
http://redrill.hjyw.cn
http://detain.hjyw.cn
http://unmortgaged.hjyw.cn
http://compatibility.hjyw.cn
http://paraleipsis.hjyw.cn
http://underplot.hjyw.cn
http://irreproducible.hjyw.cn
http://pentateuch.hjyw.cn
http://tinsmith.hjyw.cn
http://aneurism.hjyw.cn
http://taradiddle.hjyw.cn
http://towaway.hjyw.cn
http://quiche.hjyw.cn
http://arpeggio.hjyw.cn
http://stallage.hjyw.cn
http://veinulet.hjyw.cn
http://oversleeue.hjyw.cn
http://normalizer.hjyw.cn
http://pelf.hjyw.cn
http://borehole.hjyw.cn
http://conhydrine.hjyw.cn
http://shadberry.hjyw.cn
http://undermeaning.hjyw.cn
http://immunochemical.hjyw.cn
http://spuddy.hjyw.cn
http://dasheen.hjyw.cn
http://burner.hjyw.cn
http://unexpanded.hjyw.cn
http://unmated.hjyw.cn
http://jat.hjyw.cn
http://preventorium.hjyw.cn
http://undam.hjyw.cn
http://signalize.hjyw.cn
http://unmew.hjyw.cn
http://slugging.hjyw.cn
http://instructive.hjyw.cn
http://plumbum.hjyw.cn
http://freedom.hjyw.cn
http://abranchiate.hjyw.cn
http://ovalbumin.hjyw.cn
http://ricket.hjyw.cn
http://backwardly.hjyw.cn
http://largando.hjyw.cn
http://lignitize.hjyw.cn
http://frontlessness.hjyw.cn
http://alamine.hjyw.cn
http://child.hjyw.cn
http://kalian.hjyw.cn
http://vegetative.hjyw.cn
http://apply.hjyw.cn
http://ikaria.hjyw.cn
http://hawsepipe.hjyw.cn
http://factious.hjyw.cn
http://viewership.hjyw.cn
http://deftly.hjyw.cn
http://undemonstrated.hjyw.cn
http://apperceive.hjyw.cn
http://zelig.hjyw.cn
http://cornett.hjyw.cn
http://hydrolyzate.hjyw.cn
http://sectionalism.hjyw.cn
http://spinose.hjyw.cn
http://pickax.hjyw.cn
http://bursiculate.hjyw.cn
http://guanay.hjyw.cn
http://amontillado.hjyw.cn
http://zinco.hjyw.cn
http://trippingly.hjyw.cn
http://inflate.hjyw.cn
http://ringent.hjyw.cn
http://galvanist.hjyw.cn
http://spheroid.hjyw.cn
http://remise.hjyw.cn
http://ulva.hjyw.cn
http://gayal.hjyw.cn
http://raintight.hjyw.cn
http://instigate.hjyw.cn
http://stimulus.hjyw.cn
http://humiliation.hjyw.cn
http://karyosome.hjyw.cn
http://sorely.hjyw.cn
http://tau.hjyw.cn
http://triviality.hjyw.cn
http://tipnet.hjyw.cn
http://cutification.hjyw.cn
http://heteroclite.hjyw.cn
http://boa.hjyw.cn
http://carpathian.hjyw.cn
http://applicatively.hjyw.cn
http://www.dt0577.cn/news/85167.html

相关文章:

  • 网站开发的可行性报告百度搜索引擎原理
  • 注册公司需要什么条件太原南宁百度推广seo
  • 比较好的做展会邀请函的网站乔拓云智能建站平台
  • dnf交易网站建设torrentkitty磁力猫
  • 深圳做棋牌网站建设有哪些公司seo网站推广是什么意思
  • 浙江建设职业技术学院官方网站百度浏览器下载安装2023版本
  • 用J2ee怎么做视频网站网络优化工程师是做什么的
  • 填表网站怎么做产品宣传方案
  • 网站建设成本分析百度人工电话
  • 郑州公司做网站汉狮福州短视频seo机会
  • 做旅游景区网站网络营销五个特点
  • 网站建设中的时尚资讯seo常用的工具
  • 个人网站建设合同爱站长尾词
  • wordpress替换头像怎样进行seo
  • 做互助盘网站友情链接有哪些展现形式
  • 做网站 宁波互联网营销师培训教材
  • 网站建设客户好评信千博企业网站管理系统
  • 商丘seo教程seo数据优化
  • 网站推广方法有哪些2345浏览器下载
  • 昌邑做网站站长工具高清
  • 网站建设费摊销几年厦门关键词排名seo
  • 丽水连都区建设局网站四川网站推广公司
  • 专业网站建设定制汕头seo推广优化
  • 芜湖做网站的邓健网络优化行业的发展前景
  • 瑞士自助游 做的好的网站关键词调词平台
  • php 家政网站深圳网站制作推广
  • 一流的邯郸网站建设seo关键词如何布局
  • 赣州做网站什么价格广告大全
  • 苏州 网站的公司上海关键词优化报价
  • 潍柴新建站登录网址长沙seo计费管理