java 继承

Posted 流星雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 继承相关的知识,希望对你有一定的参考价值。

一.继承

  • 概念

    继承就是子类继承父类的特征和行为,使得子类从父类继承方法,
    使得子类具有父类相同的行为。

  • 类的继承格式

    class 父类 {
    }
    class 子类 extends 父类 {
    }

  • 为什么需要继承

企鹅类:
public class Penguin { 
    private String name; 
    private int id; 
    public Penguin(String myName, int  myid) { 
        name = myName; 
        id = myid; 
    } 
    public void eat(){ 
        System.out.println(name+"正在吃"); 
    }
    public void sleep(){
        System.out.println(name+"正在睡");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "号" + name + "."); 
    } 
}
老鼠类:
public class Mouse { 
    private String name; 
    private int id; 
    public Mouse(String myName, int  myid) { 
        name = myName; 
        id = myid; 
    } 
    public void eat(){ 
        System.out.println(name+"正在吃"); 
    }
    public void sleep(){
        System.out.println(name+"正在睡");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "号" + name + "."); 
    } 
}
【如果要开发一个类(动物类)中老鼠类和猫类,就需要属性和方法,代码就会存在重复,所以要从根本上解决问题,就需要继承,将两段代码中相同的部分提取出来组成一个父类:】
公共类:
public class Animal { 
    private String name;  
    private int id; 
    public Animal(String myName, int myid) { 
        name = myName; 
        id = myid;
    } 
    public void eat(){ 
        System.out.println(name+"正在吃"); 
    }
    public void sleep(){
        System.out.println(name+"正在睡");
    }
    public void introduction() { 
        System.out.println("大家好!我是"         + id + "号" + name + "."); 
    } 
}
【这个Animal类就可以作为一个公共类,然后企鹅类和老鼠类继承这个类之后,就有公共类当中的属性和方法,子类就不会存在重复的代码,,代码也更加简洁, 继承之后的代码:】

企鹅类:
public class Penguin extends Animal { 
    public Penguin(String myName, int myid) { 
        super(myName, myid); 
    } 
}
老鼠类:
public class Mouse extends Animal { 
    public Mouse(String myName, int myid) { 
        super(myName, myid); 
    } 
}
  • 注意

    Java 不支持多继承,但支持多重继承。

    单继承
    public class A{....}
    public class B extends A{...}

    多重继承
    public class A{...}
    public class B extends A{...}
    public class C extends B{...}

    不同类继承同一类
    public class A{...}
    public class B extends A{...}
    public class C extends A{...}

    多继承(不支持)
    public class A{...}
    public class B{...}
    public class C extends A,B{...}
  • 重写

    如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写
    方法重写 :写与父类雷同的成员方法时,会更新父类,称为重写。声明不变,重新实现。

    class Fu {
     public void show() {
      System.out.println("Fu show");
     }
    }
    class Zi extends Fu {
    【子类重写了父类的show方法】
     public void show() {
      System.out.println("Zi show");
     }
    }
    class Demo10{
     public static void main(String[] args) {
      Zi z = new Zi();
     【子类中有show方法,只执行重写后的show方法】
      z.show(); // Zi show
     }
    }
  • super与this关键字

    super:对父类的访问。
    this:指向自己的。

    class shueiguo {
     public void e() {
      System.out.println("红");
     }
    }
    class pingguo extends shueiguo {
     public void e() {
      System.out.println("红");
     }
    }
     public void ee() {
      this.eat(); 【this 调用本类的方法】
      super.eat(); 【 super 调用父类的方法】
     }
    }
    public class Demo08 {
     public static void main(String[] args) {
      shueiguo a = new shueiguo();
      a.e();
      pingguo c = new pingguo();
      c.ee();
     }
    }

    结果:

    shueiguo : 红
    pingguo : 红
    shueiguo :红
    

以上是关于java 继承的主要内容,如果未能解决你的问题,请参考以下文章

java中封装,继承,多态,接口学习总结

java代码在片段活动中不起作用

java 代码片段【JAVA】

# Java 常用代码片段

# Java 常用代码片段

创建片段而不从 java 代码实例化它