【java基础】访问修饰符

修饰方法或成员变量

类写法方法写法权限本类本包子类本包非子类包外子类非子类的外包类remark
普通类public class xxx { *** }public void xxx(){ *** }public 
普通类public class xxx { *** }protected void xxx(){ *** }protectednot allowed不能被包外非子类调用
普通类public class xxx { *** }void xxx(){ *** }package privatenot allowednot allowedpackage private包内私有
普通类public class xxx { *** }private void xxx(){ *** }privatenot allowednot allowednot allowednot allowed 
接口类public interface  xxx { *** }public void xxx();public 
接口类public interface  xxx { *** }protected void xxx();not allowednot allowednot allowednot allowednot allowednot allowed 
接口类public interface  xxx { *** }void xxx();public接口方法不写权限其实就是public,这点与普通类不同
接口类public interface  xxx { *** }defalut void xxx(){ *** }public只有接口类才能使用default关键字. JDK 1.8以后的默认实现方法
接口类public interface  xxx { *** }private void xxx();not allowednot allowednot allowednot allowednot allowednot allowed 
抽象类public abstract class  xxx { *** }public abstract void xxx();public 
抽象类public abstract class  xxx { *** }protected abstract void xxx();protectednot allowed这里指的是实现类,在被包外类调用时,不能调用该方法。
而不是不能被包外类继承实现
抽象类public abstract class  xxx { *** }abstract void readDataAbs();not allowednot allowednot allowednot allowednot allowednot allowed 
抽象类public abstract class  xxx { *** }private abstract void xxx();not allowednot allowednot allowednot allowednot allowednot allowed 

以上所讲的本包类和外包类,指的是类所在的最小文件夹路径是否相同,而不是指当前项目包。

总结:
普通类: public、protected、默认不写(package private)、private 四种修饰符,修饰的都是被调用权限。
接口类:public、默认不写(但这里的默认不写也是public)、default,其实也就public和default两种修饰符。JDK 1.8之前其实只有public一种。default是JDK 1.8后添加的修饰符,修饰符修饰的方法实指的是现类可以现它,也可以不实现它。不实现它,被调用时就是调用它接口中默认的实现。但是public的接口必须被实现。default只能在接口中使用。
抽象类:public、protected两种修饰符。其中protected指的是实现类,在被包外类调用时,不能调用该方法。而不是不能被包外类继承实现。
接口类和抽象类都不能自己new自己,必须new实现类。

接口与抽象类的区别?
1. 抽象类可以有普通成员变量, 接口没有普通成员变量
2. 抽象类和接口都可有静态成员变量, 抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
 

3. 一个子类只能继承一个抽象类, 但能实现多个接口
4. 抽象类可以有构造方法, 接口没有构造方法
 

5. 抽象类可以有静态方法;接口在JDK8之前不能有静态方法,在JDK8中可以有静态方法。且只能被接口/抽象类直接调用,但不能被接口或抽象类的实现类的对象调用。
6. 抽象类可以没有抽象方法, 抽象类可以有普通方法;接口在JDK8之前都是抽象方法,在JDK8可以有default方法,在JDK9中允许有私有普通方法
7. 抽象类中的方法可以是public、protected; 接口方法在JDK8之前只有public abstract,在JDK8可以有default方法,在JDK9中允许有private方法

 

 

 

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值