zoukankan      html  css  js  c++  java
  • java 8中抽象类与接口的异同

    1.java 8中抽象类与接口的异同

    相同点:

    1)都是抽象类型;

    2)都可以有实现方法(以前接口不行);

    3)都可以不需要实现类或者继承者去实现所有方法,(以前不行,现在接口中默认方法不需要实现者实现)

    不同点:

    1)抽象类不可以多重继承,接口可以(无论是多重类型继承还是多重行为继承);

    2)抽象类和接口所反映出的设计理念不同。其实抽象类表示的是"is-a"关系,接口表示的是"like-a"关系;

    3)接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值;抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

      接口实例:

    public interface Test {
        //接口中的常量定义(必须为其赋值)
         String str = "abd";
         //抽象方法的定义(没有具体的实现)
         String hello();
        //java8新增的默认方法(默认方法实现类可以实现也可以不实现,不实现也能直接调用接口的默认方法)
         default  void meme() {
             System.out.println("测试默认方法");
         }
         //默认方法的重载
         default  void meme(String a) {
             System.out.println("测试默认方法111");
         }
         //包含方法的实现的静态方法(实现类不能重写此方法)
         static  void geg(){
             System.out.println("这是一个静态的方法!!!");
         };
    }
    
    实现类:
    public class TestImpl implements  Test{
        @Override
        public void meme(String a) {
        }
        @Override
        public void meme() {
            System.out.println("111");
        }
        @Override
        public String hello() {
            return null;
        }
        public static void main(String[] args) {
            TestImpl test = new TestImpl();
            test.meme();
        }
    }

    抽象类实例:

    /**
     *  1.抽象类可以被继承
     *  2.当继承的父类是抽象类时,需要将抽象类中的所有抽象方法全部实现。
     *  3.抽象类中不一定要包含abstrace方法。也就是了,抽象中可以没有abstract方法。
     *  4.一旦类中包含了abstract方法,那类该类必须声明为abstract类。
     *  5.用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。
     *  6.抽象类不能被实例化。因为抽象类中方法未具体化,这是一种不完整的类,所以直接实例化也就没有意义了。
     */
    public  abstract   class StaticTest {
        //抽象类中变量的定义,默认为friendly类型
         String str;
        //抽象方法(只有包含抽象)
        abstract void dada();
         //抽象类中也可以包含普通方法
         public void hehe(){
             System.out.println("第一个方法");
         };
        //抽象类中也可以包含普通方法
         static  void gogo(){
         }
    }
  • 相关阅读:
    目录和文件的权限设置方法
    logstash5 单实例多配置文件实现
    elasticsearch 使用快照方式迁移数据
    mysql 主库有数据通过锁库做主从
    mfs挂载
    web页面性能分析一些网址
    centos7 ffmpeg安装
    (转)在 Windows 上安装Rabbit MQ 指南
    (转)TeamCity配置笔记
    (转)分布式缓存GemFire架构介绍
  • 原文地址:https://www.cnblogs.com/zblwyj/p/10107260.html
Copyright © 2011-2022 走看看