抽象方法
将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
抽象类
如果一个类中存在抽象方法,那么该类就必须声明为抽象类,在类中没有包含足够的信息来描绘一个具体的对象
定义格式:
抽象方法的定义格式:
public abstract int map();//没有{}
抽象类的定义格式:
public abstract class 类名
{
}
注意事项
1.抽象类不能实例化(不能创建对象)需要依靠子类采用向上转型的方式处理;
2.抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类;
3.可以有构造方法
作用:创建子类对象时,为属性赋值
4.抽象类的子类 ,要么重写抽象类的所有抽象方法(idea右键),要么抽象类
5.抽象类不能使用final修饰
意义
抽象方法:将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样,
所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类
为什么要有接口
部分对象有的功能,既不是某个对象特有的功能,又不是所以对象都有的功能;
接口类似于一种规则,可以将其付给不同对象,是对行为抽象
接口的定义
1.接口的定义利用关键字interface定义
public interface 接口名{}
2.接口不能实例化
3.接口和类是实现关系,通过implements关键字表示(可以多实现)(可以让一个类在继承一个类的同时 实现多个接口)
public class 类名 implements 接口名{}
public class 类名 implements 接口1,接口2{}
public class 类名 extend 父类 implements 接口1,接口2{}
接口的特点
成员变量
只能是常量,默认修饰符 public static(为了方便调用) final(规则不能发生改变)
构造方法
没有构造方法,因为接口不能创造对象,没有子类
成员方法
只能是抽象方法,默认修饰符 public abstract
接口和类之间的关系
类和类
继承关系,可以单继承,不能多继承,可以多层继承
类和接口
实现关系,可以单实现,可以多实现,可以继承和实现同时进行
接口和接口
继承关系,可以单继承也可以多继承,若使用最下面的子接口则需要重写所有抽象方法
接口新增内容
默认方法
允许在接口定义默认方法,需要使用关键字default 修饰
作用:解决接口升级问题
接口中默认方法的定义格式:
格式:public default返回值类型 方法名(参数列表)()
public default void show() {
}
接口中默认方法的注意事项:
默认方法不是抽象方法,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字
public可以省略,default不能省略
如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写
静态方法
直接使用static修饰即可
格式
public static 返回值类型 方法名(){
}
public static void show (){
}
注意事项
静态方法只能通过接口名调用,不能通过实现类名或者对象调用
static 不能省略
私有方法
普通私有方法
格式:private 返回值类型 方法名 (参数列表){}(给默认方法服务,主要作用提前重复代码)
private void show(){}
静态私有方法
格式:private static 返回值类型 方法名 (参数列表){}(为静态方法服务)
private static void show(){}