抽象类
1、抽象方法和抽象类的由来
抽象方法:没有方法体的非静态成员方法
为何会有抽象方法?
举例:比如:Java程序和各种数据库的连接,对于Java而言,无法具体实现。于是Java中只定义标准,不具体实现,具体的实现交给各个数据库厂商。
2、声明
在class前加关键字abstract
3、成员
// 抽象类的声明:在class关键字前面用 abstract 修饰
public abstract class Shape {
// 成员变量
String name; // 图形的名称
double c; // 周长
double area; // 面积
// 构造方法
public Shape() {}
// 成员方法(抽象方法)
public abstract double getC();
public abstract double getArea();
// 成员方法
public void showMsg() {
System.out.println("图形:" + name);
System.out.println("面积:" + area);
System.out.println("周长:" + c);
}
}
比普通类多了抽象方法
4、抽象类和抽象方法的关系
抽象类中可以有抽象方法,也可以没有
含有抽象方法的类一定是抽象类
5、抽象类的特点
1、有构造方法,但是不能创建对象,why?
抽象类必须通过继承进行实例化,不能直接创建对象。
2、抽象类的子类
普通类
必须实现抽象类的所有抽象方法、
抽象类
可以实现抽象类的部分抽象方法
3、abstract关键字不能修饰构造方法、静态方法、变量
abstract关键字可以修饰类、非静态成员方法
4、abstract关键字不可以和哪些关键字共存?
final:不能,因为抽象类必须有子类,而final定义的类不能有子类
static:外部抽象类无法使用,内部抽象类可以使用。
private:不能,因为private修饰后无法进行继承,而抽象类可以被继承。
final关键字
1、可以修饰类、变量、成员方法
2、修饰类:该类为最终类
最终类的特点:不能被继承,即不可以有子类
3、修饰变量:该变量为有名常量
4、修饰成员方法:最终方法
特点:不可以被重写
接口
1、为何使用接口?
接口可以解决Java中类之间的单继承问题
2、接口作用
一个类可以同时实现多个接口,解决单继承问题
接口与接口之间是多继承
把方法的声明和方法的实现进行了分离
接口对外表现的是一种能力(提供服务)
3、接口的声明
使用关键字 interface eg:public interface UserServiceInterface{}
4、接口的成员
公有的静态成员常量
public static final double area = 22; // 静态成员常量 ,public static final可省略
公有的静态方法(JDK8以上)
抽象方法,接口没有构造方法
5、类与类、类与接口、接口与接口之间的关系
类与类:单继承
类与接口:实现(类实现接口),一个类可以实现多个接口
接口与接口:多继承
方法的重写
方法的重载:
在同一个类、接口中,出现了方法名相同,方法的参数列表不同的现象,称为:方法的重载。
方法的重写:
有继承或实现关系,子类或实现类可以继承下来的方法,并且是非静态的
子类重写父类的方法,实现类重写接口的方法
要求:不能修改父类或实现类的方法声明。