Java接口与抽象类

版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创!


恰饭广告




接口:接口是抽象方法的集合。接口通常以interface来声明。

接口注意事项:

1、严格来说,接口是用来实现(implements),而不是继承(extends)。

2、接口对象不能直接使用关键字new进行实例化,可以利用子类对象的向上转型进行实例化。

3、接口必须要有子类,子类可以实现(implements)多个接口,而且一个接口也能继承另一个接口。

4、接口的成员只能是常量,不能是变量。如String name;(变量)。String name=bing;(常量)。

5、接口的成员和方法一般都是对外开放的(public) ,【private 、protected 、abstract】不能去修饰接口的常量。【protected、private、static、final】不能去修饰接口的方法。

6、定义接口方法和常量的时候就算没有写上public,那么最终的访问权限也是public,而不是default。

7、为了节省打字时间,接口的方法默认都是public abstract修饰。

接口的示例代码:

public interface OneInterface {  //接口1
    public static final String oneName = "小明";//全局常量
    public abstract void msgOne();//公共抽象方法,无return
    
}
interface TwoInterface{  //接口2
    public static final String twoName = "小红";//全局常量
    public abstract String msgTwo();//公共抽象方法,有return
}

要去实现接口的子类:

public class Test implements OneInterface,TwoInterface{ //多接口实现
	@Override
	public void msgOne() {  //子类去实现接口1的方法
		System.out.println(oneName);
	}
	@Override
	public String msgTwo() {  //子类去实现接口2的方法
		System.out.println(twoName);
		return twoName;
	}
	public static void main(String[] args){
		Test t=new Test();  //子类实例对象
		t.msgOne(); //对象调用方法
		t.msgTwo();
	}
}  

接口的作用:(不是三言两语就能说清楚的)

1、解决了java的单一继承(extends)。

2、简单、规范性,维护、拓展性,安全、严密性;(详解请访问https://www.cnblogs.com/zhaoyanjun/archive/2016/03/25/5320034.html


抽象类:abstract修饰的类。

抽象类注意事项:

1、abstract 可以修饰类或方法,但不可以修饰成员和构造方法。

2、抽象类对象不能通过new关键字实例化。

3、抽象方法不在声明它的类中实现,但必须在某个子类中重写。

4、abstract 关键字不能应用于 static、private 、 final 修饰的方法,因为这些方法不能被重写。

5、抽象类不一定要有抽象方法,但有抽象方法的类必定是抽象类。

抽象类代码例子:

public abstract class Abstract {
    String oneName="小明";
    String twoName="小红";
    public abstract void msgOne(); //抽象类自己的不能实现的方法
    public abstract String msgTwo();
    static void test(){  //抽象类自己的可以实现的方法
        System.out.println("小明\n小红");
    }
    public static void main(String[] args){
        test();  //抽象类不能创建对象,所以用static修饰方法,方便调用
    }
}

继承抽象类的子类:

public class Test extends Abstract{  //继承抽象类
    
    @Override
    public void msgOne() {  //重写了抽象类的方法
        System.out.println(oneName);
    }
    @Override
    public String msgTwo() {  //重写了抽象类的方法
        System.out.println(twoName);
        return twoName;
    }
    public static void main(String[] args){
        Test t=new Test();  //子类实例对象
        t.msgOne(); //对象调用方法
        t.msgTwo();
    }
} 

运行结果:(相同)

小明
小红

接口与抽象类的区别:

1、接口多实现,抽象单继承。

2、抽象类中有自己可以实现的方法体,但接口不行。

3、抽象类可以有静态代码块和静态方法,但接口不行。

4、图:

java抽象类与接口的区别图表

关于接口和抽象类在声明情况下的使用:(https://www.cnblogs.com/dolphin0520/p/3811437.html

最后:仔细认真理解!

原文链接:https://www.idaobin.com/archives/404.html

让我恰个饭吧.ヘ( ̄ω ̄ヘ)

支付宝 ——————- 微信
图片加载中图片加载中



恰饭广告

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 37 = 43