抽象类与接口
来源:互联网 发布:无人深空低配优化补丁 编辑:程序博客网 时间:2024/06/15 23:25
接上篇例子
父类Animal:
class Animal{private String name;Animal(String name){this.name=name;}public void enjoy(){System.out.println("叫声。。。");}}
子类Cat 和 Dog:class Cat extends Animal{private String eyesColor;Cat(String n,String c){super(n);eyesColor=c;}public void enjoy(){System.out.println("喵~"); //重写父类Animal中的enjoy方法}}class Dog extends Animal{ private String furColor; Dog(String n,String c){super(n);furColor=c;} public void enjoy(){ System.out.println("汪汪汪~"); }}
只有定义没有实现——抽象类;抽象类关键字Abstract;抽象方法就是用来被重写的,且一定被重写,抽象类本身就是残缺不全的类,只有重写时才给它补充完整了。
抽象类一定要写关键字abstract 来标注:Animal类可写成抽象类
abstract class Animal{private String name;Animal(String name){this.name=name;}public abstract void enjoy();}
java是单季承,但现实世界中存在多继承这种现象:比如金丝猴既是动物又是需要保护的,继承动物类,也继承需要保护类,这时需要用到接口
接口interface是一种特殊的抽象类,这个抽象类中全部是定义或常量,没有变量没有方法具体的实现
接口解决多继承的问题:
一个类可以实现多个无关的接口;多个无关的类可以实现同一个接口。接口与实现类之间存在多态性。
例子:
interface Singer{public void sing();public void sleep();}interface Painter{public void paint();public void eat();}
//学生实现Singer接口class Student implements Singer{public void study(){System.out.println("Studying");}public void sing(){ System.out.println("Studenet is singing"); //接口中sing方法的具体实现}public void sleep(){System.out.println("student is sleeping");}}
//教师实现Singer 和 Painter两个接口class Teacher implements Singer,Painter{public void sleep(){System.out.println("teacher is sleeping");}public void sing(){System.out.println("teacher is singing");}public void paint(){System.out.println("teacher is painting");}public void eat(){System.out.println("teacher is eating");}}public class Interface{public static void main(String args[]){Singer s1=new Student();s1.sing(); s1.sleep();Painter p1=new Teacher();p1.paint();p1.eat();}}
结果:
Studenet is singing
student is sleeping
teacher is painting
teacher is eating
0 0
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 接口与抽象类
- 小程序,会是下一个创业风口吗
- Winform利用委托实现子窗体传值给父窗体
- 确认对话框ConfirmDialog和选择对话框OptionDialog:猜数游戏
- Web前端入门之了解浏览器
- 利用Nginx实现动静分离和负载均衡
- 抽象类与接口
- Intellij 14 配置
- PHP快速排序
- PAT甲级1073
- Netty4.x中文教程系列(一) Hello World !
- HTML学习笔记5:列表和表单
- 【JavaEE】经典JAVA EE企业应用实战-读书笔记8
- 剑指offer-----从尾到头打印链表(java版)
- Android_Bitmap你到底多大