A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王秋霞0812 中级黑马   /  2014-1-22 12:07  /  1184 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个类有时需要继承父类,
有时需要实现接口,二者在功能上有何不同
而二者分别在什么时候使用

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

3 个回复

倒序浏览
类只支持单继承 也就是说一个类智能有一个父类。
子类可以具备父类的属性和方法 ,也可以有自己独立的属性和方法。
例如:学生具备人的特性:属性:姓名 ,年龄;行为:睡觉。
同时父类可以创建对象。
而我们知道学生除了睡觉和学习之外 还可能有其他的行为
如:运动:打球,跑步;娱乐:听歌,绘画。在Java中我们可以用接口来实现
接口可以被多重实现(implements)
1)接口只有定义,不可以有实现,也就是说接口不可以实例化对象。
     因为有抽象方法。子类对接口中的抽象方法全都覆盖后,子类
     才可以实例化。否则子类是一个抽象类。
2)接口的字段定义默认为:
     常量:public static final。
     方法:public abstract。
3)接口可以被多实现,即一个类可以实现多个接口。

类的继承一般继承的是事物的属性,如:姓名,年龄,性别 等,
而接口的继承(或者说实现)一般是继承事物的行为,如:行走,飞翔,游泳
(这比较抽象,在一般项目中大部分是指对某事物的增删改查等操作)

实例:
  1. class Person
  2. {
  3.         String name;
  4.         int age;
  5.         void sleep()
  6.         {
  7.                 System.out.println("睡觉");
  8.         }
  9.         void show()
  10.         {
  11.                 System.out.println("person_name:"+ name+",person_age:"+ age);
  12.         }
  13. }
  14. interface Sport//运动
  15. {
  16.         public abstract void playBall();//打球
  17.         public abstract void run();                //跑步
  18. }
  19. interface  Recreation//娱乐
  20. {
  21.         public abstract void music();  //听歌
  22.         public abstract void paint();  //绘画
  23. }

  24. class Student extends Person implements Sport,Recreation
  25. {
  26.         void study()
  27.         {
  28.                 System.out.println("学习");
  29.         }
  30.         void show()//覆写父类的show方法
  31.         {
  32.                 System.out.println("stu_name:"+ name+",stu_age:"+ age);
  33.         }
  34.         public void playBall()
  35.         {
  36.                 System.out.println("stu_"+ name + ":打球");
  37.         }
  38.         public void run()
  39.         {
  40.                 System.out.println("stu_"+ name + ":跑步");
  41.         }
  42.         public void music()
  43.         {
  44.                 System.out.println("stu_"+ name + ":听歌");
  45.         }
  46.         public void paint()
  47.         {
  48.                 System.out.println("stu_"+ name + ":绘画");
  49.         }
  50. }

  51. class  Demo
  52. {
  53.         public static void main(String[] args)
  54.         {
  55.                 Student stu = new Student();
  56.                 stu.name ="张三";
  57.                 stu.age = 20;
  58.                 stu.show();
  59.                 stu.sleep();
  60.                 stu.study();
  61.                 stu.playBall();
  62.                 stu.run();
  63.                 stu.music();
  64.                 stu.paint();

  65.                 Person p = new Person();
  66.                 p.name = "李四";
  67.                 p.age = 18;
  68.                 p.show();
  69.         }
  70. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
这个其实主要是看你的程序,一个类既可以实现多个接口然后再继承一个父类来完成你的程序,所以这就看你的程序设计了
【修饰符】 class 类名 extends 父类 implements 父接口1,父接口2....
注意先继承在实现就行了的

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
继承父类的时候,是说父类中的成员是子类所必须有的,是子类功能的一部分,而一个类实现一个接口是说这个类除了有自己基本的功能之外,又拓展了新的功能。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马