码迷,mamicode.com
首页 > 编程语言 > 详细

java类的继承

时间:2018-10-08 23:19:48      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:不能   输出   类型   自动   值类型   pre   src   构建   定义   

      在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类的继承

标签:不能   输出   类型   自动   值类型   pre   src   构建   定义   

原文地址:https://www.cnblogs.com/wangjiong/p/9757617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!