要想学习抽象类与接口们就要先认识抽象类与接口
抽象类:
1:类是由0个或多个属性和方法组成
2:一个完整的类的所有方法都要实现
3:类里面可以没有方法,但是有方法就肯定要有实现
4:一个完整的类才能被实例化
5:抽象类里面有未实现的方法,即方法里面只有方法名称、形参列表,没有方法体(没有大括号),叫做抽象类
注:抽象类关键字abstract声明
——成员变量,个数不限
——具体方法,方法已经实现,个数不限
——抽象方法,加abstract关键字,个数不限
package Face_friend;
public abstract class abstract_class {
int area;
public abstract void calArea();
}
/*
因为类里面的方法没有实现,所以方法使用abstract修饰;
这个类也要用abstract修饰;怎样一个抽象类就实现了;
*/
首先声明的是抽象类也是一个类。一个类继承于抽象类,就不能继承于其他的类
子类可以继承与抽象类,但是必须对父类方法进行实现。如果不能全部实现,那么这类也会被定义为抽象类,不能被对象化。
接口
特性一:
如果定义一个类的所有方法都没有被实现,那么这个类就叫做接口。
从这里我们可以看出,接口(方法都没有实现)、抽象类(方法部分实现)、类(方法全部实现)三者的区别。抽象类和接口不能被直接实例化,不能进行new操作。
接口有个不一样的特性:类只可以继承(extends)有个类,但是可以实现多个接口(implements),继承和实现可以同时实现。
特性二:
1:接口可以继承多个接口,每天实现的方法也将会进行叠加。也就是子类继承父类,同时将父类的东西都继承了。
2:类继承接口,必须对接口的所有的方法将进行实现。如果没有全部实现,这个类就叫做抽象类。
package Face_friend;
import org.w3c.dom.css.Rect;
public class Rectangle extends abstract_shape{
// 成员变量
int width;
int length;
public Rectangle() {
// TODO Auto-generated constructor stub
}
// 类的构造函数
public Rectangle(int width,int length) {
// TODO Auto-generated constructor stub
this.length=length;
this.width=width;
}
// 接口的方法具体实现
@Override
public void calArea() {
// TODO Auto-generated method stub
System.out.println(this.length*this.width);
}
// 主函数
public static void main(String[] args) {
// 类的具体化
Rectangle rect = new Rectangle(10,5);
rect.calArea();
}
}