• 接口,抽象类,一般类


       接口,抽象类,一般类,他们的共同点:都是一个类;

        抽象类前面介绍了一些,下面谈谈接口,我们知道抽象类用abstract修饰符修饰,它可以拥有抽象方法,也可以拥有具体方法。抽象类最大的特征就在于它不能被实例化,而接口本身就是一个抽象类,不同于抽象类的是,你可以不用显式地显示它的abstract修饰符,也不用显式地显示它的方法的abstract修饰符,即使不显示,但是它的方法依然属于抽象方法,接口中只能包含抽象方法,它不允许有具体方法。

       接口是用来实现的,用修饰符implements,而抽象类则只能被extends.一个一般类只能继承于一个类,但是它可以实现多个接口。

    1)定义一个接口:

    public  abstract interface IInterTest  //等同于public class IInterTest,可以省略 abstract
    {
            public  void printName();//等同于public abstract void printName,可以省略 abstract
    }

    2)定义它的实现类:

    public   class InterTest  extends InterTester
    {
        public static void main(String[] args)
        {
            IInterTest test = new InterTest();//接口的多态,借口自己无法实例化,但是它的引用可以指向它的一个实现类的对象;
            
            test.printName();
            
            InterTester test1 = new InterTest();
            
            InterTester test2 = new InterTest();
            
            test1.printAge();//父类的static方法是无法被重写的,就是你写了它也不帮子类实现,一直实现的是父类的方法;
            
            InterTester.printAge();//推荐使用类名.加静态方法
        }
        public void printName()//抽象类实现接口,可以不写接口中的方法,但是不代表它没做;实现接口的抽象类中虽然可以不写接口的方法,但是不代表这个方法没有,所以必须实现抽象方法;
        {
            System.out.println("MyName");
        }
        public static void printAge()//静态方法只能被继承,不能被重写,虽然不报错,但是不执行
        {
            System.out.println(33);
        }
        public InterTest()//只在new一个新的对象的时候,才执行构造方法;
        {
            System.out.println("后于静态代码块执行!");
        }
        static //初始时执行,执行一次,最先执行最上级的父类,再依次向下执行,执行完所有静态代码块再做其他操作;
        {
            System.out.println("静态代码块,先于构造方法!");
        }
    }
    abstract class InterTester implements IInterTest
    {
        //抽象类实现接口,可以不写接口中的方法,但是不代表它没做;
        public static void printAge()
        {
            System.out.println(23);
        }
    }


    输出结果如下:

    静态代码块,先于构造方法!
    后于静态代码块执行!
    MyName
    后于静态代码块执行!
    后于静态代码块执行!
    23
    23

    上面的程序将继承,实现,一般类,接口,抽象类放到一起就是方便大家区分。接口不能被一般类继承,接口只能被接口继承,接口既可以被一般类实现,也可以被抽象类实现。

  • 相关阅读:
    c# winfrom 查看网络图片
    C# winfrom 读取txt文本内容
    c# winfrom 下载网页源代码
    c# winfrom 下载网络资源
    c# 换行符
    内存映射问题
    APUE 书中 toll 函数
    [P3387] 【模板】缩点
    [P5960] 【模板】差分约束算法
    [CF1442C] Graph Transpositions
  • 原文地址:https://www.cnblogs.com/MedivhQ/p/3801416.html
Copyright © 2020-2023  润新知