javaSE-抽象和接口

一.抽象

抽象类不可以创建对象(但是有构造方法)

抽象方法一定是个成员方法

1.abstract修饰符

修饰的类是抽象类

修饰的成员方法是抽象方法,没有方法体

2.抽象类

**定义:**被abstract修饰的类就是抽象类

特点:

抽象类不能被实例化,只能被继承

一般抽象类中,有功能定义,但是没有功能的实现,必须让子类实现

抽象类也可以继承抽象类

如果一个非抽象类继承一个抽象类,必须实现所有的抽象方法

但是一个抽象类继承一个抽象类的话,可以实现0~N个抽象方法

**目的:**把控制权放在父类上(控制反转)

注意:

含有抽象方法的类必须是抽象类,但是抽象类中不一定有抽象方法,比如要使一个类不能实例化对象

final和abstract不可以同时出现,因为final修饰的成员方法不能被覆写,而抽象方法就是用来被继承的的

二.接口

1.语法:

[修饰符] interface 接口名{}

2.注意事项

1.对于接口中的常量,public static final可以省略

2.对于接口中的抽象方法 public abstract可以省略,默认就是public abstract

3.一个类可以实现多个接口
4.接口和接口之间可以多继承

例如:

interface A extends B,C,D{
    
}
interface B{}
interface C{}
interface D{}

5.一个抽象类实现一个接口需要实现0~N个方法

6.一个普通类实现一个接口需要实现他所有的方法和这个接口所继承的接口中的方法

2.优点:

面向接口编程,当一个功能拥有多种实现的时候,就需要依赖接口编程,此时可以降低耦合度.

解决了java单继承的缺陷

2.接口在1.8之后的新特性

支持静态方法和默认方法(真正实现了多继承)

interface C1 {
	// 静态方法
	public static void m1(){
		System.out.println("静态m1方法");
	}
	// 默认方法,就等于普通类中的成员方法
    /*
    	注意:这里的default不是访问控制权限符,仅仅是一个修饰符,修饰接口中的默认方法
    */
	public default void m2(){
		System.out.println("默认方法");
	}
	// 抽象方法,等于没有方法体的成员方法
	public void m3();
}

1.9开始,支持private方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值