java 类、接口基础知识

作者: cobs | 来源:发表于2017-05-17 07:31 被阅读160次

    Java中 private、protected、public和default的区别

    作用域 当前类 同一包类 子孙类 其他包
    public Y Y Y Y
    protected Y Y Y N
    default Y Y N N
    private Y N N N

    类似于倒三角形的样子
    注意

    • 上面说的是类的方法属性作用域,default是类属性的默认修饰符。
    • 接口的属性和方法只有public 和default 修饰词。而接口的默认属性是默认是public static final ,方法是public abstract。
    • 新建类的修饰符只有public和默认不选(表示同包可访问),在内部类中可以有其他修饰符

    override 和 overload

    • override 重写,表示子类重写了父类的方法

      • 方法名、参数、返回值相同
      • 子类方法不能缩小父类的访问权限
      • 子类方法不能抛出比父类方法更多的异常,但可以不抛出异常
      • 方法被定义成final,static 不能被重写
    • overload 重载 一个类定义多个同名的方法

      • 参数类型,个数不对应
      • 不能通过访问权限、返回类型、抛出的异常进行重载

    注意:static方法 官网推荐是直接用类名调用。

    接口 interface

    在Java8 中接口也可以定义默认方法与静态方法

    import java.util.function.Supplier;
    
    public class testInterfaceMethodes {
        private interface Defaulable {
            // Interfaces now allow default methods, the implementer may or 
            // may not implement (override) them.
            default String notRequired() { 
                return "Default implementation"; 
            }        
        }
        private static class DefaultableImpl implements Defaulable {
        }
        private static class OverridableImpl implements Defaulable {
            @Override
            public String notRequired() {
                return "Overridden implementation";
            }
        }
        private interface DefaulableFactory {
            // Interfaces now allow static methods
            public static Defaulable create( Supplier< Defaulable > supplier ) {
                return supplier.get();
            }
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Defaulable defaulable = DefaulableFactory.create( DefaultableImpl::new );
            System.out.println( defaulable.notRequired() );
                 
            defaulable = DefaulableFactory.create( OverridableImpl::new );
            System.out.println( defaulable.notRequired() );
    
        }
    
    }
    

    ==>执行结果
    Default implementation
    Overridden implementation


    上一篇文章 java 基础知识总结

    如有什么不对的地方,欢迎大家指出来,我们共同学习!!
    接下来会写关于集合类相关的文章,谢谢大家关注

    相关文章

      网友评论

      • Morgan实习:感觉你的文章写的蛮有深度的:wink::wink::wink:望多多交流啊
        cobs:@溜香蕉皮的鸭鸭 哈哈 一起学习

      本文标题:java 类、接口基础知识

      本文链接:https://www.haomeiwen.com/subject/mxbkxxtx.html