接口与抽象类的区别

一、接口简介

          Java中的接口及实现类里面关于接口简介:  CSDN

二、抽象类简介

              

            1.定义

                一种特殊的类,表示一种抽象的概念,不能被实例化,只能被其他类继承。

            2.抽象类里面的内容

                抽象类除了不能被实例化外,其它方面都和普通Java类相同。

                2.1// 常量 public static final double PI = 3.14159;

                2.2// 成员变量 protected String name;

                2.3// 构造方法 public Animal(String name) { this.name = name; }

                2.4// 非抽象方法 public void eat() { System.out.println(name + " is eating."); }

                2.5 // 抽象方法 public abstract void sound();

                2.6// 嵌套类 public static class NestedClass {

                                                public void nestedMethod() { 

                                                 }

                                     }

                2.7 // 嵌套接口 public interface NestedInterface { void nestedInterfaceMethod(); }

                2.8//静态方法 public static void staticMethod() {

                                                System.out.println("This is a static method in abstract class.");

                                        }

                2.9 // 静态块 static { System.out.println("This is a static block in abstract class."); }

                2.10// 初始化块 { System.out.println("This is an initialization block in abstract class."); }

                2.11final方法:final方法是不能被重写的方法。在抽象类中通过final方法阻止子类改变某些方法的行为。

        3.抽象类特征

        3.1抽象类不能被实例化,只有抽象类的非抽象子类可以创建对象。

        3.2如果一个类包含一个或多个抽象方法,那么这个类必须被声明为抽象类。反之,一个抽象类不必包含抽象方法。

        3.3抽象类的子类如果不是抽象类,那么必须实现抽象类中的所有抽象方法。否则,这个子类也必须被声明为抽象类

三、接口与抽象类的异同

        1.相同点

                1.1两者都不可以被实例化

                1.2抽象类和接口都是实现抽象化和多态性的重要手段

        2.不同点

                2.1针对里面的内容:抽象类除了不能被实例化,里面包含的和普通类(常量、成员变量、成员方法等)一样

                     接口中只能包含静态常量(即 public static final)、方法的声明(而非实现)以及内部定义的其他类型(如枚举类型或内部类)

                2.2针对抽象方法:抽象类可以包含非抽象方法,而 interface 中的所有方法都默认为抽象方法(Java8新增静态方法默认方法)。

                2.3

维度抽象类接口
常量与普通类一致只有静态常量(public static final)
方法与普通类一致只有抽象方法(jdk8新增静态方法默认方法)
访问修饰符与普通类一致只有public
实现方式一个类只能继承一个 abstract class可以实现多个 interface
目的作为其他类的基类描述一个对象可以做什么
应用场景一个类需要实现一个通用的方法,并且还需要拥有一些具体的方法和属性,它应该继承一个抽象类。一个类需要实现多个不同的方法,它应该实现多个接口。

基本概念

1.构造方法

        1.1定义

        在Java中,构造方法是一种特殊的方法,用于在创建对象时初始化对象,即为新创建的对象分配内存,并包含对新对象必要的初始化

        1.2构造方法的主要特点

         1.2.1方法名:构造方法的名称必须与类名完全相同,甚至包括大小写。

          1.2.2返回值:构造方法没有任何返回类型,包括void。因此不能在构造方法中使用return语句。

          1.2.3构造方法不能被final、static、synchronized、abstract和native修饰。它默认为public,如果不希望外部直接通过new来调用,可以设置为protected或私有。

           1.2.4如果没有定义构造方法,编译器会为我们提供一个默认的构造方法。这个构造方法是无参数的,如果我们定义了构造方法,编译器就不会提供默认的构造方法了。

            1.2.5构造方法可以重载,即一个类可以定义多个构造方法。

2.抽象方法

        2.1抽象方法是一种只有声明没有具体实现的方法。这种方法通常存在于抽象类或接口中。

        2.2抽象方法的主要特点

        2.2.1抽象方法使用关键字abstract进行声明。

        2.2.2抽象方法只有方法签名,没有方法体。

        2.2.3抽象方法的存在主要是为了被子类或实现类重写,以实现具体的功能。

        2.2.4抽象方法不能是静态的,因为静态方法不能被重写。但是,抽象方法可以是公有的、保护的或默认的。

public abstract class AbstractClass {

        public abstract void abstractMethod();

}

在这个例子中,abstractMethod就是一个抽象方法,它在AbstractClass抽象类中被声明,但是没有被实现。这个方法需要在AbstractClass的子类中被重写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值