抽象方法:
1)由abstract修饰
2)只有方法的定义,没有方法体的
抽象类
1)由abstract修饰
2)有抽象方法的类必须是抽象类
3)抽象类不能被实例化
4)抽象类是需要被继承的,子类
4.1)重写
4.2)也声明为抽象类——不常用
5)抽象类的意义
5.1)包含公共的行为和属性,被子类所共享
5.2)为所有子类提供一种统一的公共的类型——向上造型
5.3)包含抽象方法,为子类提供一个统一的入口
5.4)如果一个类继承了抽象类。就必须重写其抽象方法,除非该类也定义为抽象类(不同的子类有不同的实现方法)
java是不建议空方法的
Shape s = new Shape(); ——错误
abstract class Shape{ //抽象类(不完整)
int c; //周长
abstract double area(); //抽象方法(不完整)
}
abstract class Square extends Shape{ //方形类
}
class Circle extends Shape{ //圆形类
double area(){ //重写–变不完整为完整
return 0.0796*c*c;
}
}
Circle cir = new Circle();
abstract class 汽车{
abstract void 制造发动机();
}
class 汽车{
void 制造发动机(){
}
}
new汽车对象
接口:接口可以看作是特殊的抽象类,即只包含有抽象方法的抽象类
1.是一个标准,规范
遵守了这个标准,就能干某件事——API之后再去了解
2.由interface定义
3.只能包含常量和抽象方法
interface Inter1{
public static final int NUM = 5;
public abstract void show();
double PI = 3.14159; //默认public static final
void sayHi(){} //pubilc static
//int num; //编译错误
//pubilc void say(){}//编译错误
}
4.接口不能被实例化
5.接口也是需要被实现/继承的(单独存在是没有意义的)
其实现类/子类, 必须重写其所有的抽象方法
6.一个类可以实现多个接口,用逗号分隔(只能继承一个父类)
若又继承又实现时,应该先继承extends,后实现implements。
7.接口可以继承接口
类对类———————————继承
接口对接口——————继承
类和接口——————–实现
interface Inter2{
void a();
void b();
}
class Aoo implements Inter2{
public void a(){};
pubilc void b(){}; //实现接口的类中重写接口的方法,必须是public
}