public interface Test {
public static final int a = 0;
public void test();
public static void test2(){
System.out.println("test2");
default void test3(){
default void test4();//错误,default修饰方法必须要有实现体
3、错误情况
在接口中方法都是不能用private和protected修饰的,这两种修饰就违背了面向对象的原则。
private好理解,接口是需要被实现才有意义的,不能被实现也就没有意义了。
protected需要理解面向对象的概念,protected是不在一个包内不能被访问,所以在类和接口不在同一个包内时就会有问题。
假设public接口I有一个protected方法M,那么位于其他包的public类C就可以实现这个接口(方法M依然是protected)。那么C的同包类D调用方法M只能这样访问:
C c = new C();
c.M();
无法这样访问:
I c = new C();
c.M();
这样就失去了使用接口的重要意义:提供统一的接口,面向接口编程思想也无法体现。
4、为什么接口中的属性必须是public static final 修饰的
public跟方法的原因一样了
static:我们假设有两个接口A和B,而类C实现了接口A和B。假设,此时,A和B中都有一个变量N,如果N不是static类型的,那么在C中该如何区分N到底是A的还是B的呢?而,如果是static类型的,我们可以通过A.N和B.N来区别调用A或者B中的成员变量N。
final:接口是一种通用的协议存在的,多个类实现同一个接口可以方便针对这个接口的调用类对接,所以final就是为了禁止在接口中不同的实现类修改属性造成混乱。如果变量不是final,那么每个实现接口的类就可以更改这个变量的值,也就违反了OCP(开闭原则)原则。
对于java接口的功能还是需要在使用中慢慢理解,掌握其中微妙的变化带来的不同功能。
通常使用java 的接口时都是不带修饰符的public interface Test { int a = 0; void test();}其实这个里面有好多修饰符都是默认省略掉了。正确的类型应该是:public interface Test { public static final int a = 0; public void test();}public...
本篇文章总结一下Java的访问修饰符,虽然这样的总结在网上已经有很多了,但是作为基础部分,还是要亲自总结一下,才能加深记忆。
文章目录1. 访问修饰符有哪些,可以用在什么地方2. 类
1. 访问修饰符有哪些,可以用在什么地方
Java中的访问修饰符有四种,分别是public,protected,默认,private。主要作用是控制类之间的数据的访问权限。这些修饰符可以修饰的Java元素有下面这些:
类中的方法
接口中的方法
类中的字段
接口中的字段
注意,方法的形式参数和方法的局部变量是不.
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。看看下面的例子:复制代码 代码如下:function test(){static $a=0;$a++;echo $a;}test();//1test();//2test();//3Note: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。复制代码 代码如下:static $a=0+1;static $a=sqrt(121);像上面的赋值方式会报错,不信你试试
您可能感兴趣的文章:浅谈php中的访问修饰符private、protected、p
抽象类和抽象方法
在Java中用abstract修饰的类是抽象类,用abstract修饰的类的方法是抽象方法,抽象类和抽象方法用法总结如下。
1.abstract可以修饰class表示抽象类,可以修饰方法表示抽象方法,但是不能修饰成员变量,也是没有抽象的成员变量。
2.用abstract修饰的类中可以有abstract方法,也可以没有abstract方法;可以有非abstract方法,也可以没有非abstract方法。
3.只有abstract类中才能声明abstract方法,abstract方法不能声明在非abstract类中。
4.abstract类可以是外部
Java中有四种访问修饰符用于控制类、接口、变量和方法的封装程度。这四种修饰符分别为:
private 私有的,类可见性
package/friendly/default 包级别的/友好的/默认的,包可见性
protected 受保护的,不同包,子父类可见性
public 公共的,项目可见性
其中,变量和方法可以用四种修饰符修饰,而类和接口仅能用public和default修饰。
类之间的关系
类和类之间的关系有如下几种:
以Hero为例
自身:指的是Hero自己
同包子类:ADHero这
接口中的方法访问权限可以是public、default、private,那为何不可以是protected呢?protected级别不是在四者中间吗?
首先我们先回顾一下下面这张熟悉的访问权限表:
那么我们能够发现protected是可以让不同包的子类去进行调用的,那么我们想想一个类可能是一个接口的子类吗?显然不可能,类只能实现接口,但那不叫继承接口。虽然接口也是有子接口的,但那又如何呢,类还是无法继承接口啊。而如果default和private就能够让类实现接口里的方法,那么protected的存在
这篇文章主要介绍了python字典setdefault方法和get方法使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在python的字典对象中,可以直接使用键名获取键值,像这样:
>>> d = {"x":1,"y":2}
>>> d["x"]
>>> d["y"]
但如果键名不存在,则会报错:
>>> d["z"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'z'
这就影响了代码的可执行性。
抽象类方法
JDK 1.8以前,抽象类的方法默认访问权限为protected(可以是public和protected)
JDK 1.8时,抽象类的方法默认访问权限变为默认访问权限(可以是public和protected或者不写)
接口方法
JDK 1.8以前,接口中的方法默认,也必须是public的(只能用public)
JDK 1.8时,
答案:ABD
这考的是接口中属性的知识点,类型是public static final,且访问权限只能是public 意味着是个常量所以必须初始化且不能再更改了,结合下面图理解以下。
public int...
方法命名如图:
不要使用魔鬼数字,用有意义的常量代替。SQL或日志的字符串,不应视为“魔鬼数字”,不需定义为字符串常量;不应该取NUM_FIVE = 5或NUM_5 = 5这样的魔鬼常量。
避免使用否定的布尔变量名,