java类的继承

Posted 重黎

tags:

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

      在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。

案例代码1-1:

 1 package cn.itcast.chapter04.example01;
 2 
 3 //定义一个类
 4 class Animal{
 5      String name;  //定义name属性
 6 
 7      // 定义动物叫的方法
 8      void shout(){
 9             System.out.println("动物发出叫声");
10      }
11 }
12 
13 //定义Dog类继承Animal类
14 class Dog extends Animal{
15      //定义一个打印name的方法
16      public void printName(){
17             System.out.println("name="+name);
18      }
19  }
20  
21  //定义测试类
22 public class Example{
23      public static void main(String[] args){
24             Dog dog= new Dog(); //创建一个Dog类的实例对象
25             dog.name="沙皮狗"; //为Dog类的name属性进行赋值
26             dog.printName(); //调用dog类的getInfo()方法
27             dog.shout(); //调用dog类继承来的shout()方法
28      }
29 }

其输出结果为:

 

在类的继承中,需要注意一些问题,具体如下:

       1.在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的:

1 class A {}
2 class B {}
3 class C extends A,B{} //C类不可以同时继承A类和B类

       2.多个类可以继承一个父类,例如下面这种情况是允许的:

1 class A{}
2 class B extends A{}
3 class C extends A{} //类B和类C可以同时继承类A

       3.在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可以称作A类的子类。例如下面的情况是允许的:

1 class A{}
2 class B extends A{} //类B继承类A,类B是类A的子类
3 class C extends B{} //类C继承类B,类C是类B的子类,同时也是类A的子类

      4.在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的实例中,B类是A类的子类,同时又是C类的父类。

 

重写父类方法

       在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。需要注意的是,在子类中重写的方法需要和父类被重写的方法具有相同的方法名,参数列表以及返回值类型。

      在案例代码1-1中,Dog类从Animal类继承了shout()方法,该方法在被调用时会打印“动物发出叫声”,这明显不能描述一种具体动物的叫声,Dog类对象表示犬类,发出的叫声应该是“汪汪汪”。

案例代码1-2:

      为了解决这个问题,可以在Dog类中重写父类Animal中shout()方法;

 1 package cn.itcast.chapter04.example02;
 2 
 3 //定义Animal类
 4 class Animal{
 5       //定义动物叫的方法
 6      void shout(){
 7              System.out.println("动物发出叫声");
 8      }
 9 }
10 
11 //定义Dog类继承Animal类
12 class Dog extends Animal{
13       //定义狗叫的方法
14       void shout(){
15               System.out.println("汪汪汪......");
16       }
17  }
18 
19 
20 //定义测试类
21 public class Example02{
22       public static void main(String[] args){
23               Dog dog=new Dog(); //创建Dog类的实例对象
24               dog.shout(); //调用dog重写的shout()方法
25       }
26 }

其运行结果为:

       

 

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

java类的继承

代码笔记Java基础:类的继承(构造器)

Java基础——类的继承

java基础第五天_静态代码块类的继承和接口

java 继承父类 是会先执行父类吗

新年在家学java之基础篇-高级类的特性