在刚开始学习的时候,感觉似乎明白了,而自己动手写代码的时候,怎么老是调不通,这可能就是有些细节没有记住,这一章就专门讲解java中的一些细节问题:
1、访问权限:
public 、protected、default 、private
public和private很好区别,往往是将default和protected混淆;
类一般声明为public这样方便在其他包或类中调用,属性一般声明为private;在方法的修饰上却有很大的不同,往往用public和protected修饰,很少用default和private;public声明的方法也很好理解,而为什么要用protected修饰呢?
比如有一个A.fun1()方法,可能涉及程序运行稳定;如果不对其限制访问,在不该执行的地方执行了new A().fun1()这个方法,就会造成很多麻烦;所以要对其限制访问;但是,在某处确实需要执行这个方法,如果设置成了default或private,将在外包永远无法访问,这就需要protected这个访问权限来处理了;
具体使用:
package org.skx
public A{
protected say(){
System.out.println("ok");
}}
package org.skx2
public B extends A{
protected say(){ //或者进行权限扩展为public
super.say();
}}
注意: 1、访问权限只能扩展不能缩小;2、要调用父类的protected方法或属性,只能覆写这个方法,在方法里面使用super关键字引用,直接使用new B().say();是无法访问的,属性同理;3、super关键字只能适用覆写public和protected修饰的方法(属性);
2、实现接口:
public interface A{
public void sayHI();
}
public interface B{
public void sayHello();
}
public class AB impliments A,B{
public void sayHI(){
System.out.println("hi');
}
public void sayHello(){
System.out.println("hello");
}
}
如果现在是 A ab = new AB();如何调用sayHello()方法呢?(B)ab.sayHello()直接转义就可以。