Java中的继承、覆盖与重载

在Java中通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),继承产生的新的类称为子类(派生类)。Java不允许多继承。
1.继承

class Animal{
    void eat(){
        System.out.println("Animal eat");
    }
    void sleep(){
        System.out.println("Animal sleep");
    }
    void breathe(){
        System.out.println("Animal breathe");
    }
}

class Fish extends Animal{

}

public class TestNew{

    public static void main(String[] args) {
        //继承了父类的所有方法
        Animal an = new Animal();
        Fish fn = new Fish();

        an.breathe();
        fn.breathe();
        
     }
 }

运行之后的结果为:
Animal breathe
Animal breathe

2.覆盖

class Animal{
    void eat(){
        System.out.println("Animal eat");
    }
    void sleep(){
        System.out.println("Animal sleep");
    }
    void breathe(){
        System.out.println("Animal breathe");
    }
}

class Fish extends Animal{
    void breathe(){
        System.out.println("Fish breathe");
    }

}

public class TestNew{

    public static void main(String[] args) {
        //继承了父类的所有方法
        Animal an = new Animal();
        Fish fn = new Fish();

        an.breathe();
        fn.breathe();
        
    }
}

运行之后的结果为:
Animal breathe
Fish breathe

如果在子类中定义一个跟父类相同的函数,也即在子类中定义一个与父类同名,返回类型,参数类型均相同的一个方法,称为方法的覆盖。方法的覆盖发生在子类和父类之间。

3.一个例子(继承Thread类)

public class Example extends Thread{
     @Override
     public void run(){
        try{
             Thread.sleep(1000);
             }catch (InterruptedException e){
             e.printStackTrace();
             }
             System.out.print("run");
     }
     public static void main(String[] args){
             Example example=new Example();
             example.run();
             System.out.print("main");
     }
}

这个类虽然继承了Thread类,但是并没有真正创建一个线程
创建一个线程需要覆盖Thread类的run方法,然后调用Thread类的start()方法启动,这里直接调用run()方法并没有创建线程,跟普通方法一样调用一样,是顺序执行的。

4.重载
如果有两个方法的名称相同,但参数不一致,这样一个方法是另一个方法的重载。
方法名相同方法的参数类型,个数顺序至少有一项不同

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,713评论 0 11
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,277评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,100评论 0 4
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,146评论 0 62