可以将父类的功能延续下去

为什么需要有继承:解决多个类有重复代码的问题

class 子类 extends 父类 { }

  子类:也叫派生类

  父类:本质上是java中成为超类

范例:继承的基本使用

class person{

  private String name;

  private int age;

  public void setName(String name){

    this.name = name;
  }

  public void setAge(int age){

    this.age = age;
  }

  public String getName(){

    return this.name;
  }

  public int getAge(){

    return this.age;
  }

}

class student extends Person{  //student 是子类

  //不定义任何属性

}

public class TestDemo{

  public static void main(String args[]){
    Student stu = new Student(); 
    stu.setName("张三");
    stu.setAge(20);
    System.out.println("姓名" + stu.getName() + "年龄" + stu.getAge());
  }

}

继承的使用限制:

一:Java不允许多重继承:一个子类只能继承一个父类。(C++允许)

但是允许多层继承。

class A{}

class B extends A{}

class C extends B{}   // C继承了A和B,但是开发中不要超过三层

二:子类继承父类后会将父类中全部结构继承下来,但是私有操作属于隐式继承,而所有的非私有操作属于显式继承。

class A{

  private String Name;

  public void setName(String name){

    this.name = name;

  }

  public String getName(){

    return this.name;

  }

}

class B extends A {

  public class TestJava{

    public static void main(String args[]){

      B b = new B();

      b.setName(“张三”);

      System.out.println(b.getName());

    }

  }

}

现在对于子类B是由name属性的,但是不能直接访问:

class B extends A{

  public void print(){

    System.out.println(name);  //此时name属于隐式继承,所有的setter属于显式继承,此句无法操作

  }

}

三:在实例化对象时会默认调用子类的无参构造方法,但在执行子类构造前回会先自动实例化父类构造,为父类的对象实例化,也就是说父类对象永远早于子类对象的实例化

如果非要为子类加上一个调用父类构造的标记,可以使用:super()

class A{

  public A(){

    System.out.println("111111111111");

  }

}

class B{

  public B(){

    super();  //表示由子类构造调用父类构造 加与不加都一样。调用无参父类构造没有意义,一般是父类没有提供无参构造是使用

    System.out.println("222222");

  }

}

 

posted on 2018-04-02 22:22  lonske  阅读(131)  评论(0编辑  收藏  举报