Java 入门探索者13(接口,抽象类和抽象方法)

接口是一种抽象的数据类型,它定义了一组操作和属性,而不关心具体实现方式。接口可以用来实现多态,一个类可以实现多个接口,从而具有多个不同的行为。

以下是关于接口的一些重要知识点:

1. 接口定义:接口使用关键字`interface`来定义,可以包含常量和抽象方法。接口可以被其他类实现,一个类可以实现多个接口。

2. 实现接口:一个类实现接口时,需要使用`implements`关键字,并且需要实现接口中所有的抽象方法。实现接口的类可以自定义其他方法和属性。

3. 接口与类的关系:接口是一种规范,类是对规范的具体实现。一个类可以继承另一个类,但可以同时实现多个接口。

4. 接口的多态性:接口可以用来实现多态,通过接口引用来调用实现类的方法。这样可以在运行时动态确定使用哪个具体实现类的方法。

5. 接口的默认方法:接口可以定义默认方法,使用`default`关键字。默认方法可以在接口中给出默认的实现,实现类可以选择是否重写。

6. 接口的静态方法:接口可以定义静态方法,使用`static`关键字。静态方法在接口级别上提供了一些工具方法。

7. 接口的继承:接口可以继承其他接口,使用`extends`关键字。这样子接口会继承父接口的抽象方法和默认方法。

8. 接口的应用:接口是一种重要的设计模式,通过接口可以实现代码的解耦和模块化,提高代码的可维护性和可扩展性。

以上是关于接口的一些基本知识,接口在面向对象编程中扮演了重要的角色,可以提高代码的灵活性和可重用性。


package lesson14;
//接口使用Interface修饰,类使用class修饰
public interface InterfaceTest {
    //静态常量
    //默认使用public static final修饰
    int a = 10;//常量
    //接口中没有构造方法
    //InterfaceTest();
    //抽象方法
    //默认使用public absstract修饰
    void mathod();
    //jdk1.8之后接口中可以有非抽象方法了
    default void doSomething(){}
    //静态方法
    public static void saySomething(){}
}
//一个接口文件中可以包含多个接口和多个类
//可以有零个或一个由public修饰的接口
//而且public修饰的接口的名字要跟文件的名字一样
//public interface Test1{}
//接口和接口之间是存在继承关系的,但是是多继承关系
//类和类之间存在继承关系,是单继承关系
interface Test2 extends Test3,Test4{}
//接口和类之间没有关系
interface Test3{}
interface Test4{}
//类和接口之间是实现关系,使用implements关键字表示实现关系,而且是多实现关系
class Test5 implements Test3,Test4{}
class Test6{}
//一个类可以同时继承一个类实现多个接口,但是要求继承在实现之前
class Test7 extends Test6 implements Test3,Test4{}
//类实现接口的时候需要重写接口中所有的抽象方法,否则要把该类定义成抽象类否则编译报错
class Test8 implements InterfaceTest{
    public static void main(String[] args) {
        //接口也不能创建对象
        //InterfaceTest test = new InterfaceTest();
        //可以创建接口类型的对象,由实现类赋值
        //接口也存在多态
        InterfaceTest test = new Test8();
            }

    @Override
    public void mathod() {
    }
}
抽象类和抽象方法是面向对象编程中的概念,用于对类和方法进行抽象和定义。

抽象类是一个不能被实例化的类,只能被继承。抽象类通常用于定义一组相关的类的共同特征和行为。它可以包含抽象方法和非抽象方法。抽象类不能被直接实例化,只有通过继承抽象类并实现其中的抽象方法,才能创建一个实例。

抽象方法是一个没有具体实现的方法,只有方法的声明,没有方法体。抽象方法必须在抽象类中定义。子类继承抽象类后,必须实现父类中的抽象方法,否则子类也必须声明为抽象类。抽象方法用于约束子类必须实现一定的方法,但不关心具体的实现细节。

抽象类和抽象方法的主要特点和用途包括:
- 抽象类和抽象方法用于对类和方法进行抽象和定义,可以提高代码的可读性和可维护性。
- 抽象类可以包含抽象方法和非抽象方法,提供一组共同的特征和行为,供子类继承和实现。
- 抽象方法只有方法的声明,没有具体的实现,通过子类实现具体的方法体。
- 抽象方法用于约束子类必须实现一定的方法,但不关心具体的实现细节。
- 抽象类不能被直接实例化,只能通过继承抽象类的子类来创建实例。
- 子类继承抽象类后,必须实现其中的抽象方法,否则子类也必须声明为抽象类。
- 抽象类和抽象方法用于建立类的继承关系,提供了一种多态的实现方式。
- Java中使用abstract关键字来定义抽象类和抽象方法。


package lesson14;
/**
 * 如果一个方法只有存在的意义没有实现的意义,这个方法可以定义成抽象方法
 * 包含抽象方法的类必然是一个抽象类
 *
 * 抽象类存在的意义就是被继承,抽象方法存在的意义就是被重写
 * 抽象类和抽象方法就是为多态服务的,所以抽象类和非抽象子类之间也存在多态性
 */
public class Test {

}
//有抽象方法的类必然是一个抽象类
//抽象类使用abstract修饰
abstract class Father{
    private int no;
    //抽象类中有构造方法
    public Father(){
    }
    //没有抽象的构造方法
    //public abstract Father(int a){}
    //抽象类中可以没有抽象方法
    public abstract void method();
    //抽象类中可以有非抽象方法
    public void doSomething(){}
}
//抽象类可以继承,但是包含抽象方法的抽象类,在继承的时候会报错,因为类中有抽象方法,
//解决报错的方法有两种一个为将子类也定义成抽象类,另一个种是重写抽象类中所有的抽象方法
class Son extends Father{
    @Override
    public void method(){
        //抽象类不能创建对象
        //Father father = new Father();
        //但是可以创建抽象类类型的对象,由子类对象赋值
        Father father = new Son();
        }
    }
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值