抽象方法和抽象类
抽象方法
- 使用abstract修饰的方法,没有方法体,只有声明。
- 定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
抽象类
- 包含抽象方法的类就是抽象类。
- 通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用
抽象类的使用要点 1.有抽象方法的类只能定义成抽象类 2.抽象类不能实例化,即不能用new来实例化抽象类 3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。 4.抽象类只能用来被继承 5.抽象方法必须被子类实现
package com.itbaizhan.abstractClass;
public abstact class Animal { //只有在包含抽象方法的类下
int age;//可以包含属性
public abstract void rest () ; //不提供实现,没有方法体要加absteact,这里意思为如果为animal子类,必须实现rest方法
public void run (){
System.out.println("Animal.run");//可以包含普通方法
}
}
Class Dog extends Aninal{//子类继承父类,必须要实现抽象方法
…………
}
接口 接口就是一组规范(就像我们人间的法律一样),所以实现类都要遵守
注意事项:接口中属性和普通的方法都不能有
#如何定义和使用接口#
声明格式
[访问修饰符]interface 接口名 [extends(继承) 父接口 1,父接口2……]{
常量定义:
方法定义:
}
定义接口的详细说明 【】访问修饰符:只能是public或默认
【】和类名采用相同命名机制
【】extends:接口可以多继承
【】常量:接口中的属性只能是常量,总是 public static final 修饰,不写也是
【】方法:接口中的方法只能是public,static,省略的话,也是public,abstract
接口中interface的作用:
是实现Java三大特性封装,继承,多态三大支柱的重要支柱之一,interface关键字,用于定义接口抽象,本质上是定义类型,定义类所具有的能力接口优先于抽象类
要点
- 【】子类通过implements来实现接口的规范。
- 【】接口不能创建实例,但是可用于声明引用变量类型。
- 【】一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是publuc的
- 【】jdk1.8(不含8)之前,接口中只能包含静态常量,抽象方法,不能有普通属性、构造方法,普通方法。
- 【】JDK1.8(含8)后,接口中包含普通的静态方法、默认方法。
package com.itbaizhan.testInterface;
//飞行接口
public interface Volant {
/public static final int Fly-HIGHT = 100;
public abstract void fly();
}
//善良接口
interface Honest{
void helpOther();
}
class GoodMan implements Honest{
@Override
public void helpother(){
System.out.println("扶老奶奶过马路");
}
}