什么是抽象类
用abstract修饰的类叫抽象类
1、抽象类不能有对象,抽象类不能实例化,不能new
2、abstract修饰的方法为抽象方法,这种方法不能有方法体(什么内容都没有)
3、抽象类不能有对象,不能new对象
4、有抽象方法的一定是抽象类,抽象类中不一定有抽象方法
5、抽象类型中的抽象方法必须在子类中被重写
抽象类不能被实例化,抽象方法必须被重写,定义它们是干嘛?
抽象类是用来被继承的,如果没有类去继承它,也就失去了意义;抽象方法生来就是被重写的,必须被重写。(只要继承了某个抽象类,就必须去重写此类中的抽象方法)
public abstract class Animal{
public abstract void eat();
public abstract void sleep();
}
定义了一个叫Animal的抽象类含有两个抽象方法,抽象方法后面也不能带大括号。
之后定义一个Cat类
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void sleep() {
System.out.println("猫睡觉!");
}
}
在这里指的注意的是:当一个类继承抽象类的时候,这个类必须去重写所继承的抽象类的抽象方法
什么是接口
接口是对抽象类的进一步抽象
接口就是某个事物对外提供的一些功能的声明,通过interface关键字完成
注:
1、接口中所有的属性默认为:public static final。。。;
2、接口中所有的方法默认为:public abstract。。。;
3、接口不需要像类一样被继承,而是用implements去实现,类和接口的关系叫实现。
public class Cat implements Sleep,Eat{
@Override
public void ioSleep(int i) {
System.out.println("我是猫,我每天都不用睡觉!!!");
}
@Override
public void ioEat() {
System.out.println("我是猫,我吃猫粮!!!");
}
}
public interface Sleep {
public static int a = 1;
public static int b = 2;
public void ioSleep(int i);
}
public interface Eat {
public abstract void ioEat();
}
抽象类和接口区别
1、实现方法:
抽象类中可以有已经实现的方法,因为存在抽象方法,所以必须是抽象类
接口中只能包含抽象方法,抽象方法是没有被实现的,只能被重写
2、子类使用的关键词不一样
抽象类使用extends来继承,抽象类就是用来被继承的,所包含的抽象方法也需要被重写
接口使用implement关键字来实现,提供接口中所有声明方法的实现
(抽象类是将梦想传给家族,一代一代去完成。那么接口就是掌门人找大师兄来完成帮派的鸿星伟业,这时候就只有一次希望,要么有能力就实现,没能力就不要接。)
3、是否有构造器(构造函数)
抽象类是类,所有有类的所有特性,是不能被实例化,但可以有构造器
接口是不能有构造器的,是所包含的所有抽象方法的集合
4、修饰符
抽象类可以有public、protected、default这些修饰符
接口只有一个修饰符public
5、运行速度
抽象方法快
接口运行满,需要时间寻找在类中实现的方法
6、继承实现
抽象类中一个子类只能继承一个父类但是可以有多个接口
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/152902.html