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() ;	// 客户只关心上网浏览一个操作
	}
};



Java继承_抽象类与接口的应用.

  • 2015年01月06日 16:10
  • 225KB
  • 下载

java应用中的子窗口切换,引出抽象类与接口的本质区别

今天一同学问我,如何在一个java应用窗口(JFrame)中切换其内的子窗口(JInternalFrame)。      我想了一下,因为所有的子窗口都可以说是有共同特性的对象,觉得用抽象类来代表一...

java 基础----抽象类与接口的区别,知道区别才能准备的应用

http://www.cnblogs.com/dolphin0520/p/3811437.html 深入理解Java的接口和抽象类   对于面向对象编程来说,抽象是它的一大特征之一。在...
  • c_c123
  • c_c123
  • 2015年06月26日 22:28
  • 266

黑马程序员_java的面向对象(对第七课继承..抽象类..接口及fianl应用总结)

------- android培训、java培训、期待与您交流! ----------   通过今天对java语言面向对象的学习,我来给自己的学习内容做下简单直白的总结: 首先,我来总结下面向对...

JAVA基础知识点(五)--抽象类,接口,多态及应用

一、抽象类: 抽象类的应用场景:          我们在描述一类事物的时候,发现该种事物确实存在着某种行为,但是这种行为目前是不具体的,那么我们可以抽取这种行为的声明,但是不去实现该种行为,这时候...

Java 中 抽象类与 接口的应用

User.java package admin; public interface User { public static int dd = 2000; public abst...

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

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

java基础之抽象类与接口的应用(二)

(1)代理设计模式的作用

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

1、为抽象类和接口实例化 抽象类和接口不能直接实例化,因为其内部包含了各个抽象方法,抽象方法本身都是未实现的方法,所以无法调用。通过对象多态性,子类发生了向上转型之后,所调用的全部方法都是被覆写过...
  • waldmer
  • waldmer
  • 2013年09月28日 12:02
  • 2091
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java自学 抽象类和接口的应用
举报原因:
原因补充:

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