关键字(final,static),抽象类,接口....

一、final

  •   修饰类,该类永远没有子类,也就是不能被继承, 可以创建对象
  •   修饰类中方法,该方法不能被重写
  •   修饰变量:既可以修饰局部变量也可以修饰成员变量
    • 被final 修饰的变量就是一个常量,只能赋值一次 final int MAX_NUM = 10;

二、static 

  • 特点:
    • 可以被本类所有的对象共享
    • 可以直接通过 类名.静态成员
    • 优先于对象存在
    • 随着类的加载而加载
  • 一句话:静态方法只能访问静态成员(静态成员变量 静态成员方法),非静态的方法可以访问任何的成员
  •   静态方法能够直接访问静态成员(变量和方法),不能访问非静态 原因:静态优先于对象而存在于内存
  •   非静态方法能够直接访问静态成员,也能够直接访问非静态成员
  •    静态方法中没有this关键字,因为我们可以通过类名.静态方法直接调用,不需要对象      原因 :如果静态方法中含有this,它将无法指向任何对象
  • 静态成员可以通过对象调用也可以使用类名调用,建议使用类名调用!!!
    非静态成员只能通过对象调用!!!

三、抽象类

抽象类的特点

  1. 含有抽象方法的类一定是抽象类
  2. 抽象类中既可以有抽象方法也可以有非抽象方法
  3. 如果子类继承了抽象类,要么重写抽象类中的抽象方法,要么子类就声明为抽象类
  4. 不能创建对象,(因为方法没有具体实现,创建对象没有作用) 是用来继承的

抽象类成员的特点:

  1. 成员变量  可以是常量  也可以是变量
  2. 构造方法    抽象类的构造方法,为了让子类的构造方法调用来初始化父类的成员
    1. 举例 : 
      abstract class Fu {
      	int a;
      
      	public Fu(int a) {
      		super();
      		this.a = a;
      	}
      }
      
      class Zi extends Fu {
      	public Zi(int a) {
      		super(a);
      	}
      }
  3. 成员方法   可以是抽象方法   也可以是非抽象方法

四、接口(interface)

  • 接口的出现是为了弥补Java没有多继承(java可以多层继承)
  •  接口是一个比抽象类还抽象,接口中所有的方法一定是抽象方法jdk7
  • abstract关键字不能和private, final 共存  原因 抽象需要重写,private和final不要重写
  • 接口可以多继承,也可以多层继承  为什么呢?  
    • 接口中的方法都是抽象的,没有具体实现, 
      多继承不同接口中相同名字的抽象方法也没关系,但是普通类中的方法有具体实现,如果要是多继承,
      不知道执行哪个类中的方法体,所以普通类不能多继承
  • 成员特点
    • 构造方法 
      • 接口中没有构造方法,因为我们的构造方法一般是用来初始化成员变量,但是
        接口中成员变量都是常量,一经初始化,值就固定了,根本不需要初始化
    • 成员方法
      •  public abstract void method();//所有的成员方法都有默认修饰符 public abstract
    • 成员变量
      • public static final int i=10;//所有的成员变量都有默认修饰符 public static final
  • 接口的优点
    • 接口的出现是为了弥补Java没有多继承,
    • 接口出现降低了耦合性
      移动硬盘,鼠标,外置键盘这些设备,当你像使用的时候直接通过USB接口来链接电脑,不  想使用直接拔掉
  • 接口与抽象类
    • 相同点
      • 两者都不能创建对象(不能直接实例化)
    • 不同点
      • 抽象类中定义的是继承体系的共性功能
        接口是扩展扩展功能
      •   构造方法
                  抽象类有构造方法,留给子类通过super()语句来初始化父类成员
                  接口没有构造方法,接口中的变量都是常量
      • 成员变量
                  抽象类中既可以有常量也可以有变量
                  接口由于是一种标准,含有的变量都是常量
      •  成员方法
                  抽象类中既可以有抽象方法也可以有非抽象方法
                  接口中的方法一定是抽象方法

五、关系 

  • 类与类:一个类只能继承一个类,不能继承多个类
  • 类与接口:一个类可以继承一个类同时还能实现多个接口
  • 接口与接口:一个接口能够继承多个接口(可以多继承 也可以多层继承)

六、权限修饰符

       		         public  		默认  			protected  			private
   在同一个类中         √             √                  √                 √
   在同一包不同类中      √              √                √
   在不同包的不同类中    √
   (这些类没有父子关系)  ---------------------------------------------------------------------------
   在不同包的不同类中    √                                √ 
   (有父子关系)
原文地址:https://www.cnblogs.com/haojia/p/12386240.html