java自学 抽象类和接口的应用

原创 2013年12月05日 09:53:32



抽象类与接口之间的关系
NO. 区别点 抽象类 接口
1 定义 包含一个抽象方法的类 抽象方法和全局变量的集合
2 组成 构造方法,抽象方法,普通方法,常量, 变量 常量,抽象方法
3 关系 抽象了可以使用多个接口 接口不能继承抽象类,但允许继承多个接口
4 使用 子类继承抽象类(extents) 子类实现接口(implements)
5 常见设计模式 模板设计 工厂设计,代理设计
7 局限 抽象类有单继承的局限 接口没有此局限
8 实际 作为一个模板 作为一个标准或表示一种能力
9 对象 通过对象多态性产生实例化对象 通过对象多态性产生实例化对象
10 选择 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承局限 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承局限
11 特殊 一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类 一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类


模板类例子

abstract class Person{
	private String name ;		// 定义name属性
	private int age ;			// 定义age属性
	public Person(String name,int age){
		this.name = name ;
		this.age = age ;
	}
	public String getName(){
		return this.name ;
	}
	public int getAge(){
		return this.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 = null ;	// 声明Person对象
		Person per2 = null ;	// 声明Person对象
		per1 = new Student("张三",20,99.0f) ;	// 学生是一个人
		per2 = new Worker("李四",30,3000.0f) ;	// 工人是一个人
		per1.say() ;	// 学生说学生的话
		per2.say() ;	// 工人说工人的话
	}
};




工厂类


interface Fruit{	// 定义一个水果接口
	public void eat() ;	// 吃水果
}
class Apple implements Fruit{
	public void eat(){
		System.out.println("** 吃苹果。") ;
	}
};
class Orange implements Fruit{
	public void eat(){
		System.out.println("** 吃橘子。") ;
	}
};
class Factory{	// 定义工厂类
	public static Fruit getInstance(String className){
		Fruit f = null ;
		if("apple".equals(className)){	// 判断是否要的是苹果的子类
			f = new Apple() ;
		}
		if("orange".equals(className)){	// 判断是否要的是橘子的子类
			f = new Orange() ;
		}
		return f ;
	}
};
public class InterfaceCaseDemo04{
	public static void main(String args[]){
		Fruit f = Factory.getInstance(null) ;	// 实例化接口
		f.eat() ;
	}
};

代理类


interface Network{
	public void browse() ;	// 浏览
}
class Real implements Network{
	public void browse(){
		System.out.println("上网浏览信息") ;
	}
};
class Proxy implements Network{
	private Network network ;	// 代理对象
	public Proxy(Network network){
		this.network = network ;
	}
	public void check(){
		System.out.println("检查用户是否合法。") ;
	}
	public void browse(){
		this.check() ;
		this.network.browse() ;	// 调用真实的主题操作
	}
};
public class ProxyDemo{
	public static void main(String args[]){
		Network net = null ;
		net  = new Proxy(new Real()) ;//  指定代理操作
		net.browse() ;	// 客户只关心上网浏览一个操作
	}
};



接口,虚函数,抽象类的理解

说明:接口其实就是程序之间的一种协定,用来约束一组相关的行为。这三种概念的功能很类似下面通过一些例子来说明。 1.接口 现在有三个动物:猫,狗,鸭子,猫不会游泳,狗会游泳,鸭子会游泳。我们要描述这...
  • jialeheyeshu
  • jialeheyeshu
  • 2016-08-28 20:14:55
  • 322

Java-面向对象(高级篇)--抽象类与接口的应用

抽象类与接口的应用 一. 抽象类的实际应用——模板设计 通过对象的多态性可以为抽象类实例化,那么抽象类该如何使用那?假设人分为学生和工人,学生和工人都可以说话,但是说的内容不相同,那么说话的功能...
  • aotumemedazhao1996
  • aotumemedazhao1996
  • 2016-10-16 12:08:54
  • 265

抽象类和接口的区别以及使用场景(记)

抽象类和接口的区别以及使用场景(记)抽象类和接口的区别以及使用场景记 相同点 不同点 interface的应用场合 abstract class的应用场合1. 相同点 两者都是抽象类,都不能实例化。 ...
  • lamyuqingcsdn
  • lamyuqingcsdn
  • 2016-01-12 09:46:33
  • 7557

<Java>接口与抽象类,区别以及使用场景

顺便做个记录 接口和抽象类应该是Java语法中最常见的两个概念 关于两者,网上也是一搜一吨的对比,总体如下: 1,抽象类的成员可以具有访问级别 接口的成员全部public级别 2,抽象类可以包含...
  • jjjjjj123321
  • jjjjjj123321
  • 2017-01-06 11:42:11
  • 2832

Java接口和抽象类用法总结,使用场景

接口 1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口。 2 接口里面的成员变量默认都是public static fi...
  • tanguang_honesty
  • tanguang_honesty
  • 2014-07-09 15:22:02
  • 6753

抽象类 接口 多态

抽象类(abstract) 在java中采用abstract关键字定义的类就是抽象类,采用abstract关键字定义的方法就是抽象方法 格式:public abstract class 类名{类体...
  • wu920604
  • wu920604
  • 2016-08-30 11:29:45
  • 374

抽象类和接口的区别与应用场景

接口和抽象类有什么区别 在应用场景下,选择使用接口和抽象类的依据是什么? 一、抽象类和接口在语法上的异同: 1、相同点 都不能被实例化 2、不同点        抽象类中不一定都是抽...
  • hanxueyu666
  • hanxueyu666
  • 2017-07-22 15:32:31
  • 349

抽象类和接口的使用场景介绍

语义上的区别: 首先 类描述的是 这个东西是什么(强调所属)?包含了静态属性,静态行为 ,属性和行为。 而接口 描述的它能做什么事儿(强调行为)?     只是 静态常量属性 和 行为 ...
  • xiaoliuliu2050
  • xiaoliuliu2050
  • 2017-03-13 22:20:34
  • 1333

[转]深入理解Java的接口和抽象类

原文地址:http://www.cnblogs.com/dolphin0520/p/3811437.html深入理解Java的接口和抽象类  对于面向对象编程来说,抽象是它的一大特征之一。在Java中...
  • zht666
  • zht666
  • 2016-05-08 09:33:33
  • 1214

Java的抽象和接口实验报告

实验报告 课程名称 面向对象程序设计 实验日期 2016.03.30 实验项目名称 Java的抽象和接口 实验地点...
  • dkh_321
  • dkh_321
  • 2016-09-09 18:43:10
  • 1577
收藏助手
不良信息举报
您举报文章:java自学 抽象类和接口的应用
举报原因:
原因补充:

(最多只允许输入30个字)