java笔记 chapter7 抽象类和数组

抽象类:
     使用abstract 修饰的类就是抽象类。抽象类的本质就是一个类。
     1,抽象类不能被实例化,往往用来做父类,定义子类中共有的方法和属性。子类继承抽象类以后,覆盖实现抽象类里的抽象方法,然后使用其子类的实例。
         子类必须覆盖父类(是个抽象类)里面所有的抽象方法,否则编译报错。
     2,抽象类可以使用类名直接调用抽象类里面的静态成员
     3,抽象类往往作为父类来使用,而子类的构造方法总是调用父类的构造方法,所以抽象类必须要有构造方法。如果没有为抽象类显式声明构造方法,抽象类也存在默认的无参构造器。
抽象方法:
只给出方法定义而不具体实现的方法.(就是没有方法体的方法,使用abstract修饰)
抽象方法是没有方法体的,在代码表达上就是没有 “{}”。 有花括号就表明有方法体。

抽象类和抽象方法的关系
     抽象类不一定包含抽象方法
     有抽象方法的类一定是个抽象类。

 
接口interface:
接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
接口的本质是个抽象类。
接口里面只能声明静态常量和抽象方法,除此之外,接口里面不能有其他的元素。
     接口里的常量,默认是(也只能是) public  static  final 的,这些修饰符可省略;可以使用接口名调用常量。
     接口里的方法都是抽象的,默认是(也只能是)public abstract的,这些修饰符可省略;
 
 
类和接口的关系:
1,类和类之间可以互相继承,接口和接口之间也可以相互继承,用关键字extends表示,区别在于接口可以同时继承多个接口,但是一个类只能同时继承一个类。
2,类和接口之间,只能是类来实现接口,一对多的关系,一个类可以同时实现多个接口,接口间用逗号分隔开,使用关键字implement
public interface A{
          public void a{ };
}
 
public interface B{
          public void b{ };
}
public interface C extends A,B{
          public void c{ };
}
以上例子接口C同时继承了接口A和B,拥有了A和B的方法,所以C接口里面有3个抽象方法:a,b,c
 
抽象类和接口的关系:
接口里面不能定义变量,接口里的方法必须都是抽象的
抽象类里可以有变量,抽象类里的方法可以是抽象的,也可以不是抽象的。
 
扩展:
类继承父类和类实现接口的区别:
两者本质是一样的,都是把父类或者接口当做模板,在这个模板上进行扩展或者重写。
但是类继承父类只能是单继承,也就是说一个子类最多只能有一个父类。
而类实现接口可以多实现,就是一个子类可以同时实现多个接口,并覆盖接口里面所有的抽象方法。
posted @ 2013-12-23 23:45  五星村小黄  阅读(868)  评论(0编辑  收藏  举报