[Java]抽象类与接口

在Java中可以通过对象的多态性为抽象类和接口实例化,这样再使用抽象类和接口即可调用本子类中所重写过的方法。

  • 抽象类——模板设计
abstract class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void say(){
System.out.println(this.getContent());
}
public abstract String getContent();
}
class Student extends Person{
private float score;
public Student(String name,int age,float score){
super(name,age);
this.score=score;
}
public String getContent(){
return "学生信息-->姓名:"+super.getName()+";年龄:"+super.getAge()+";成绩:"+this.score;
}
}
class Worker extends Person{
private float salary;
public Worker(String name,int age,float salary){
super(name,age);
this.salary=salary;
}
public String getContent(){
return "工人信息-->姓名:"+super.getName()+";年龄:"+super.getAge()+";工资:"+this.salary;
}
}
public class AbstractCaseDemo02{
public static void main(String args[]){
Person per1=new Student("张三",20,99.0f);
Person per2=new Worker("李四",30,3000.0f);
per1.say();
per2.say();
}
}

运行结果:
run

  • 接口——制定标准
interface USB{
public void start();
public void stop();
}
class Computer{
public static void plugin(USB usb){
usb.start();
System.out.println("======USB设备工作======");
usb.stop();
}
}
class Flash implements USB{
public void start(){
System.out.println("U盘开始工作。");
}
public void stop(){
System.out.println("U盘停止工作。");
}
}
class Print implements USB{
public void start(){
System.out.println("打印机开始工作。");
}
public void stop(){
System.out.println("打印机停止工作。");
}
}
public class InterfaceCaseDemo02{
public static void main(String args[]){
Computer.plugin(new Flash());
Computer.plugin(new Print());
}
}

运行结果:
run

抽象类与接口的关系

区别点抽象类接口
定义包含一个抽象方法的类抽象方法和全局常量的集合
组成构造方法、抽象方法、普通方法、常量、变量常量、抽象方法
使用子类继承抽象类(extends)子类实现接口(implements)
关系抽象类可以实现多个接口借口不能继承抽象类,但允许继承多个接口
常见设计模式模板设计工厂设计、代理设计
对象都通过对象的多态性产生实例化对象
局限抽象类有单继承的局限接口没有此局限
实际作为一个模板作为一个标准或表示一种能力
选择若两者都可以使用,则优先使用接口,避免单继承的局限
特殊一个抽象类中可包含多个接口,一个接口可包含多个抽象类
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值