类只支持单继承 也就是说一个类智能有一个父类。
子类可以具备父类的属性和方法 ,也可以有自己独立的属性和方法。
例如:学生具备人的特性:属性:姓名 ,年龄;行为:睡觉。
同时父类可以创建对象。
而我们知道学生除了睡觉和学习之外 还可能有其他的行为
如:运动:打球,跑步;娱乐:听歌,绘画。在Java中我们可以用接口来实现
接口可以被多重实现(implements)
1)接口只有定义,不可以有实现,也就是说接口不可以实例化对象。
因为有抽象方法。子类对接口中的抽象方法全都覆盖后,子类
才可以实例化。否则子类是一个抽象类。
2)接口的字段定义默认为:
常量:public static final。
方法:public abstract。
3)接口可以被多实现,即一个类可以实现多个接口。
类的继承一般继承的是事物的属性,如:姓名,年龄,性别 等,
而接口的继承(或者说实现)一般是继承事物的行为,如:行走,飞翔,游泳
(这比较抽象,在一般项目中大部分是指对某事物的增删改查等操作)
实例:
- class Person
- {
- String name;
- int age;
- void sleep()
- {
- System.out.println("睡觉");
- }
- void show()
- {
- System.out.println("person_name:"+ name+",person_age:"+ age);
- }
- }
- interface Sport//运动
- {
- public abstract void playBall();//打球
- public abstract void run(); //跑步
- }
- interface Recreation//娱乐
- {
- public abstract void music(); //听歌
- public abstract void paint(); //绘画
- }
- class Student extends Person implements Sport,Recreation
- {
- void study()
- {
- System.out.println("学习");
- }
- void show()//覆写父类的show方法
- {
- System.out.println("stu_name:"+ name+",stu_age:"+ age);
- }
- public void playBall()
- {
- System.out.println("stu_"+ name + ":打球");
- }
- public void run()
- {
- System.out.println("stu_"+ name + ":跑步");
- }
- public void music()
- {
- System.out.println("stu_"+ name + ":听歌");
- }
- public void paint()
- {
- System.out.println("stu_"+ name + ":绘画");
- }
- }
- class Demo
- {
- public static void main(String[] args)
- {
- Student stu = new Student();
- stu.name ="张三";
- stu.age = 20;
- stu.show();
- stu.sleep();
- stu.study();
- stu.playBall();
- stu.run();
- stu.music();
- stu.paint();
- Person p = new Person();
- p.name = "李四";
- p.age = 18;
- p.show();
- }
- }
复制代码 |