java_基础_接口和抽象类

1.接口

java中接口的存在意义是:让多个继承该接口的类实现多态,让多个类有相同的特征

示例代码:

interface MyInterface{
    void myMethod();
}

class Test1 implements MyInterface{

    @Override
    public void myMethod() {
        // TODO 自动生成的方法存根
        System.out.println("test1");
    }
    
}

class Test implements MyInterface{

    @Override
    public void myMethod() {
        // TODO 自动生成的方法存根
        System.out.println("test");
    }
    
    public void test2(MyInterface me) {
        me.myMethod();
    }
    
    public static void main(String[] args) {
        Test test = new Test();
        test.myMethod();
        Test1 test1= new Test1();
        test1.myMethod();
        test.test2(new MyInterface() {
            @Override
            public void myMethod() {
                // TODO 自动生成的方法存根
                System.out.println("test2");
            }
        });
        
    }
}

基本用法就如上,被红色标注的是接口的匿名内部实现方法,也算是一种写法了

输出如下:

test
test1
test2

2.抽象类

抽象类内部可以有完善的方法,但是不可以被实例化,只能够被间接的调用内部方法以及参数,比如在当做参数传递的时候,以及在非静态方法中使用super调用

示例代码:

abstract class MyAbstractClass{
    abstract void myMethod();
    
    void myAbstractClass() {
        System.out.println("hello myAbstract");
    }
}

class Test1 extends MyAbstractClass{

    @Override
    public void myMethod() {
        // TODO 自动生成的方法存根
        System.out.println("test1");
    }
    
}

class Test extends MyAbstractClass{
    
    @Override
    public void myMethod() {
        // TODO 自动生成的方法存根
        System.out.println("test");
    }
    
    public void test2(MyAbstractClass me) {
        me.myMethod();
        me.myAbstractClass();
super.myAbstractClass(); }
public static void main(String[] args) { Test test = new Test(); test.myMethod(); Test1 test1= new Test1(); test1.myMethod(); test.test2(new MyAbstractClass() { @Override public void myMethod() { // TODO 自动生成的方法存根 System.out.println("test2"); } }); } }

基本用法和接口是一样的,只不过接口中不能有完善的方法,而且不用abstract关键字,抽象类中抽象方法一定要用abstract关键字

输出如下:

test
test1
test2
hello myAbstract
hello myAbstract

希望能够帮到大家

以上

猜你喜欢

转载自www.cnblogs.com/lavender-pansy/p/10776538.html