标签:其他 void abs 权限 int 变量 cte 就是 color
java中有三个访问权限修饰符private;protected;public和一个默认default(不加修饰符)。
如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低于父类的访问级别。这是为了确保可以使用父类实例的地方都可以使用子类实例,也就是确保满足里氏替换原则。
字段绝不能是共有的,因为这么做的话就失去了对这个字段修改行为的控制,客户端可以对其随意修改;可以使用共有的getter和setter方法来替换共有字段。
但是也有例外,如果是包级私有的类或者私有的嵌套类,那么直接暴露成员不会有特别大的影响。
public class AccessWithInnerClassExample { private class InnerClass{ //私有嵌套类 int x; } private InnerClass innerClass; public AccessWithInnerClassExample(){ innerClass = new InnerClass(); } public int getValue(){ return innerClass.x; } }
抽象类:
抽象类不一定包含抽象方法,抽象方法一定位于抽象类中;抽象类和普通类的最大区别是:抽象类不能被实例化,需要继承抽象类才能实例化其子类。
接口:
接口的成员(字段+方法)默认都是public的,并且不允许定义为private或者protected;
接口的字段默认都是static和final的(接口中无变量声明,只有常量,因为用了final修饰符);
接口的方法默认都是abstract的,从Java8开始,接口方法也支持default和static修饰,但是使用默认的方法和静态的方法必须有方法体。
public interface InterfaceExample { default void fun1(){ //默认方法 //这里是方法体,虽然没有语句 } static void fun2(){ //静态方法 //这里是方法体,虽然没有语句 } }
比较:
访问父类的构造函数:可以使用super()访问父类的构造函数,从而完成一些初始化的工作;
访问父类的成员:如果子类覆盖了父类中的某个方法的实现,可以通过使用super关键字来引用父类的方法实现。
重写存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法;
重载存在于同一个类中,指一个方法与已经存在的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。(返回值不同,其他都相同不算是重载)
标签:其他 void abs 权限 int 变量 cte 就是 color
原文地址:https://www.cnblogs.com/liumilk/p/10523931.html