构造方法:

1.构造方法是不可以子类被子类继承的,所以构造方法也不可以被重写,因为重写的前提是继承。

2.构造方法可以被重载。

3.构造方法不可以带有返回值类型,但是可以在构造方法中使用return来中断代码的执行,但是return后面不能跟任何东西。

接口:

1.接口:只能是public或者friendly的,而且一定是abstract的。但没有写abstract时,系统会默认加上abstract。

  为什么接口不能的修饰符不能是private、protected?

  private:当用private修饰时,只有本类才能访问,那么没有任何类可以实现这个接口,所以毫无意义。

  protected:当用protected修饰接口a时,假如类b和接口a在不同的包内,那么类b能访问接口a的前提是b是a的子类,但是a作为一个接口,不可能是b的父类,所以当用protected修饰    接口时,所起到的作用和friendly是一模一样的,都只能被同一个包下的类实现。

2.接口内的变量:必须用public、static、final修饰,而且必须在定义的时候赋初值。默认修饰符:public static final。

  为什么呢?

  public:接口是标准,必须对外开开放,否则没有意义。

  static:确保该变量只有一份,避免重名。

  final:因为接口中的成员变量是所有实现它的类所公用的,不允许随便修改,所以定义成了final类型。

  访问接口中的变量用接口名.变量名的方式。

3.接口内的方法:只能是public abstract ,如果不写,默认是 public abstract。

  同时,接口中只能定义方法,不能实现方法。

  java不建议在两个接口中,定义相同的方法。同一个类同时实现了这两个接口的时候,虽然不会报错,但是只会实现这一次这两个同名的方法。

  当一个普通类实现一个接口时,就必须实现这个接口中所有的方法;如果时抽象类实现接口,则不需要实现接口中的所有方法。

 

抽象类:

1.抽象类:只能是public或者friendly的,而且一定是abstract的。

2.抽象类中的成员变量:和普通类中定义成员变量一样,对修饰符没有限制。访问父类的变量可以通过super.变量名的方法。(注意,静态方法中不能使用使用this和super)

3.抽象类中的抽象方法:可以用public、protected、friendly修饰,不写时默认为friendly,而且要用abstract修饰。

  当抽象类用public修饰,抽象方法用默认的friendly时,如果在不同的包的非抽象类继承了该抽象类,将会报错,因为不用包中的非抽象类无法实现抽象类中的抽象方法,但是非抽象类  又必须实现抽象类中的所有抽象方法,所以报错。  

 

接口和抽象类的区别:

1.都不可以被实例化,所以都没有构造方法。

2.如果非抽象类实现了接口或者继承了抽象类都必须实现接口或者抽象类中的所有抽象方法,如果自己就是一个抽象类则不用。

3.接口中的成员变量必须是public static final修饰的,而抽象类中定义成员变量和普通类一样,对修饰符没有限制。

4.接口中只能定义抽象方法,而抽象类中可以定义抽象方法也可以实现普通方法。

5.接口中方法的范围修饰符不写时默认为public,抽象类中方法的范围修饰符不写时默认为friendly。

 

接口和类之间的关系:

1.接口可以继承接口并可以继承多个多个接口,但是接口不可以实现接口。

2.类可以实现接口并可以实现多个接口,但是类不可以继承接口。

3.一个类只能继承一个类。

4.类在继承类的时候也可以实现接口

 

 

 

 

 

 

 

 

 

 

  

 

  

  

  

  

  

 

posted on 2017-09-19 18:02  张超五  阅读(111)  评论(0编辑  收藏  举报