接口和抽象方法的区别
- 接口方法,访问权限必须是公共的 public,不能有私有的方法或变量
- 接口内只能有公共方法,必须使用public static final把成员变量修饰为常量
- 接口内只能含有抽象方法,但是不用abstract关键字。
- 实现接口的类一定要实现接口里定义的所有方法
- 可以通过继承多个接口实现多重继承
- 而抽象类是可以有私有方法或私有变量的
- 实现抽象类可以有选择地重写需要用到的方法,
- 一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
多态
概念:
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。
为什么要用多态呢
原因:
- 封装可以隐藏实现细节,使得代码模块化;
- 继承可以扩展已存在的代码模块(类);
- 它们的目的都是为了——代码重用。
- 可以解决项目中紧偶合的问题,提高程序的可扩展性.。
- 耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。
多态有什么好处
- 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承
实现多态的条件
继承的存在,继承是多态的基础,没有继承就没有多态
子类重写父类方法,多态下调用子类重写后的方法;
父类引用变量指向子类对象,不能调用子类对象特有的方法
多态中的方法
通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法
通过父类引用变量无法调用子类特有的方法
内部类
- 一个类可以定义在另外一个类的内部,定义在类内部的类称之为Inner,其所在的类称之为Outer;
- Inter定义在Outer的内部,通常只服务于Outer,对外不具备可见性,Inter可以直接调用Outer的成员及方法(包括私有的)。
- 内部类的主要作用:封装一个类的声明在类的内部,减少类的暴露。
- 内部类的实例化:实例化时不需要写出对象,非要写的话为:new 外部类名.内部类名();
- 当内部类在外部类的成员位置上,而且非私有,则在外部其他类中可以直接建立对象
- 格式:外部类名.内部类名 变量名=外部类对象.内部类对象
- 例:Outer.Inner in=new Outer().new Inner();