java基础_02_继承

来源:互联网 发布:卖淘宝店铺有什么风险 编辑:程序博客网 时间:2024/06/05 05:35
继承:extends
    避免了对一般类和特殊类之间共同特征进行的重复描述。
特点
1Java不支持多继承,一个类只能继承一个父类。但是可以实现多个接口。
2,继承具有传递性。如:C继承BB继承A,那么C也是可以使用A中的方法的。
3,多重继承机制,一个类可以被多个不同的类所继承。即可以有多个子类。
4,  建立子类对象后,要使用的方法中,如果子类有就用子类的,没有就使用父类中的。
5,继承中的成员变量:
   |-- super(),表示父类的存储空间引用
   |-- 调用父类的成员变量,super.成员变量
6, 继承中的成员方法
   |-- 子类中出现了和父类一模一样的方法,子类重写了父类方法  @override 注解:表示重写
     注意:如果父类私有化private 则子类有同名也不叫覆盖,因为私有,子类不知道父类有这个
   |-- 保证权限大于等于父类的权限
   |-- 扩展功能,沿袭父类功能,加入子类自己的新功能  super.父类方法 
   |-- 如果某个方法不让其子类复写,可以在父类方法名前加final关键字。
7, 继承中构造方法
   |-- 子类中所有的构造方法,必须先访问父类中构造方法,java中默认访问父类空参数的,都有隐藏super();
                语句如改为访问有参则改为:super(参数)  
  子类为什么一定要先访问父类?
   因为子类要用父类里的数据,所以要先看父类是怎么初始化的。
  注意:子类的构造函数第一行也可以手动通过this()来访问本类中的构造函数。
        子类中至少会有一个构造函数会访问父类中的构造函数。
  注意super()语句必须写在子类构造器的第一行。this()也是,但this() 和 super()语句不能同时存在。
8,实例化子例,会递归分配所有父类的空间。
好处
1,减少了代码的书写,利用性提高
2,继承的出现,让类与类之间产生了关系,多态就是这样产生的。
心得
1, 一个子类继承了一个父类后,子类就可以使用父类的东西,子类自己就可以不用在重写相同的功能,减少了代码的书写。但是也有不好的地方,子类要用父类的东西,在创建子类时会先创建父类对象。这样可能会加大内存的使用量。
2, 子类也可以覆盖父类的方法,去改变父类的行为。
3, 设计模式中的装饰模式就是继承的复写功能来实现的。
例:
   要求:1, 实现继承功能
2, 表现出继承的特性。 
class ExtendsText {public static void main(String[] args) {B b = new B("123");b.eat(); //演示复写功能System.out.println("----------------------");C c = new C();c.play(); //演示传递性}}class A{A(){System.out.println("构造...AA");}A(String s){System.out.println("有参构造...AA...."+s);}public void eat(){System.out.println("...AA");}public void play(){System.out.println("A...在玩");}}class B extends A{B(String s){//此处隐藏了 super()语句,如没有super语句也会自动调用super();//如果想调用父类的有参构造函数,使用 super(参数...)super(s); System.out.println("构造...BB");}public void eat() //复写父类的功能{System.out.println("......BB,复写了父类");}}class C extends B{C(){super("ggh"); // 由于 B 没有无参构造函数,所以此处必须写明,否则出错。System.out.println("构造...CC");}}

 

0 0