zoukankan      html  css  js  c++  java
  • 6-1 接口的默认方法

    public interface PersonO {
    
        /*default String getName(){
            return getClass().getName();
        }*/
        
        int size();
        default boolean max(){
            return size() == 0;
        }
        
        String getName();
    }
    public interface StudentO {
        
    //    default String getName(){
    //        return this.getClass().getName()+"_"+hashCode();
    //    }
    
        String getName();
        
    }
    public class PersonT {
    
        public String getName() {
            return getClass().getName();
        }
    }
    public class InterFaceTest extends PersonT implements PersonO,StudentO{
    
        
        @Override
        public int size() {
            return 0;
        }
        

        /**
         * @author:lixh
         *
         * Java8之后接口出现了default方法
         *
         * 1.默认方法的一个重要用途是接口演化,接口扩展了方法,实现类不用必须实现
         *
         * 2.解决默认方法冲突
         * 1)超类优先,如果超类实现了一个默认方法,同名且相同参数类型的默认方法会被忽略。
         * 2)如果一个超接口提供了一个默认方法,另一个接口提供了一个同名且相同参数的方法(不管是否默认),
         *             要重写方法来解决冲突
         * 3)如果两个接口都没有为共享方法提供默认实现,不存在冲突。实现这个方法,或者不实现(抽象类)
         *
         * 一个类的超类和接口实现相同的方法,超类优先,接口被忽略。
         */
    //二义性 /* 两个默认 * @Override public String getName() { return PersonO.super.getName(); } @Override public String getName() { // TODO Auto-generated method stub return StudentO.super.getName(); }*/ /* 一个默认一个无默认 * @Override public String getName() { // TODO Auto-generated method stub return PersonO.super.getName(); } @Override public String getName() { // TODO Auto-generated method stub return null; }*/ /* * 两个无默认 @Override public String getName() { // TODO Auto-generated method stub return null; }*/ //超类优先 @Override public String getName() { // TODO Auto-generated method stub return super.getName(); } public static void main(String ... arg){ InterFaceTest i1 = new InterFaceTest(); System.out.println(i1.getName()); } }
  • 相关阅读:
    2015/5/10站立会议(补发)
    2015/5/11站立会议(补发)
    2015/5/12站立会议(补发)
    5/13站立会议(补发)
    面向对象——抽象类和接口
    面向对象(三)——静态
    面向对象——三大特性(封装、继承、多态)
    ADO.NET
    面向对象 封装练习题
    面向对象 封装
  • 原文地址:https://www.cnblogs.com/lxh520/p/8250180.html
Copyright © 2011-2022 走看看