【JAVA】抽象类和接口类

抽象类和抽象方法

关键字:abstract
用abstract修饰的类:抽象类
a)抽象类不能实例化对象,即不能new对象
b)抽象类中一定有构造器,方便子类实例化时调用
c)提供抽象类的子类,让子类去实例化

abstract修饰方法:抽象方法
a)拥有抽象方法的类一定是抽象类,而抽象类不一定有抽象方法;
b)抽象方法只有方法声明,没有方法体;public abstract void test();
c)如果子类重写了父类中的所有抽象方法,那么该子类可以实例化;
如果子类没有重写父类中的所有抽象方法,那么该子类也是抽象类,需要用abtract修饰

注意:
a)abstract不能用来修饰 私有(private)方法、静态(static)方法、final、
b)abstract不能用来修饰属性、构造器

抽象类创建匿名对象
static class main()
{
//非匿名类,匿名对象
function(new person);
//非匿名类,非匿名对象
person p=new person();
function§;

public void function(person per)
{
		
}

}

abstract class person()
{
private void try()
{
}
}

接口

1、接口的定义
将各种实例对象的共性特点抽取出来,用接口去修饰,可以实现JAVA中不支持多继承的效果。比如人的共有特点都是有能吃饭,能跑,那学生可以跑,老师可以跑。接口也可以理解为是一种规则“如果你是要XXXXXX那你必须能XXXXXX。”

继承是一个是不是的关系,继承是一个能不能的关系。

如何使用接口

关键字:implement 接口类

接口类的使用和普通类的使用类似,都需要定义公共属性
注意:
1、接口类不能定义构造器,意味着接口不可以实例化(可以理解为接只是一个实例对象的特性,是一个抽象的东西),而抽象类可以定义构造器。其实例化是通过子类重写接口类中的方法。
2、接口通过让类去实现(implements)的方式来使用。
3、实现类覆盖(可重写可不重写但是实现类中一定要有接口类中的方法)接口中的所有抽象方法,则实现类就可以实例化。如果实现类没有覆盖接口中所有的抽象方法,那么该实现类仍然是一个抽象类。
4、接口与接口之间可以继承,而且可以多继承。

创建接口匿名实现类的非匿名对象
USB(接口) phone=new USB(){
重写接口USB中的方法;
}
com.test(phone);
创建接口匿名实现类的匿名对象
com.test(new USB(){
重写接口中USB方法;
}
)

抽象类和接口类的异同点
同:
1、都不能直接实例化,需要实现类(子类)去重写抽象类/接口类中的所有方法,才可以实例化。
2、都可以被继承
异:
1、构造方法
接口类:可以多继承,多实现,接口类与接口类之间也可以多继承。不能有构造方法
抽象类:只能够单继承。可以有构造器,
2、方法体、静态方法
接口中没有方法体;且接口中的方法不可以被static修饰,也不可以被访问权限修饰符修饰如Public
抽象类中,如果该方法被static修饰有方法体,被abstract修饰没有方法体,可以被访问修饰符和static修饰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值