目录
权限修饰符
- private :只有本类可访问到,子类都不行
- default:只有本类和本类的同包子类可以访问到
- protected:本类,同包子类,不同包子类可以访问到
- public:都可以访问到
权限修饰符主要用于父类成员变量和方法被子类调用时能否被调用界限问题
不同成员使用访问修饰符
(1)成员变量一般私有(private)
(2)方法一般公开(public)
(3)如果该成员只希望本类访问,使用private访问
(4)如果该成员只希望本类,同一个包下的其他类和子类访问,使用protected修饰
接口
成员变量特点
-
成员变量
-
只能是常量
-
默认修饰符:public static final
-
-
构造方法
-
没有,因为接口主要是扩展功能的,而没有具体存在
-
-
成员方法
-
只能是抽象方法
-
默认修饰符:public abstract
-
jdk8之后接口新特性
接口中可以存在有方法体的静态方法,静态方法是该类专属的,不可以被继承
可以存在有方法体的默认方法,default修饰,可以有方法体
jdk9后允许存在有方法体的私有方法,private修饰,也可以private static 修饰
注意事项:静态方法只能调用静态方法和属性,默认方法都可以调用
接口和类的关系
-
类与类的关系
-
继承关系,只能单继承,但是可以多层继承
-
-
类与接口的关系
-
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
-
-
接口与接口的关系
-
继承关系,可以单继承,也可以多继承
-
-
注意事项:
-
如果一个类的父类和所实现的接口中有相同的方法,默认调用的是父类的方法
-
如果两个接口中有同名的默认方法,其实现类或子接口都必须重写该方法
-
抽象类
概念
将多个子类的共性方法抽象到父类以后,父类无法指明共性方法的具体逻辑,该方法就可以再父类中定义为抽象方法
//方法需要用abstract关键字修饰,方法没有方法体
public abstract 返回值类型 方法名(参数列表);
//使用abstract关键字修饰类
public abstract class 类名{}
关于抽象类
- 抽象类不一定有抽象方法,有抽象方法的一定是抽象类
- 抽象类不可以实例化
- 抽象类可以有构造方法,虽然抽象类不能实例化,但是其子类可以实例化,实例化时可调用该抽象父类的构造方法
- 当有一个子类继承了一个抽象类,必须重写该抽象类的所有抽象方法,或者该子类也设为抽象类,一般不这么写