java中的抽象类的用法?
展开全部
1)在继承抽象类时,必须覆盖该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值,这一点与接口相同。 2)当父类已有实际功能的方法时,该方法在子类中可以不必实现,直接引用的方法,子类也可以重写该父类的方法(继承的概念)。
3)而实现 (implement)一个接口(interface)的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
4)另外,抽象类不能产生对象的,但可以由它的实现类来声明对象。 有鉴于此,在实现接口时,我们也常写一个抽象类,来实现接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰。
编辑本段实例
为了让一个类成为抽象类,至少必须有一个纯虚函数。纯虚函数形式如下: virtual return type function() = 0; 例如,类A有两个纯虚函数lock()、unlock()和一个虚析构函数: class A { public: virtual void lock(void)=0; virtual void unlock(void)=0; virtual ~A(void); } 将函数lock()和unlock()初始化为0使它们成为纯虚函数,没有0这个初使化器,它们仅仅是虚函数。 class B : public A { protected: pthread_mutex_t x; public: B(void); ~B(void); virtual void lock(void) { ead_mutex_lock(x); } virtual void unlock(void) { ead_mutex_unlock(x); } } 抽象类对于提供模式、蓝图和后代类遵循的原则有用。如果遵循了蓝图的语义,后代类的行为可能按抽象类提供者和使用者所期望的那样。通过使用抽象类,C++程序员可以提供C++组件的规范,在它的构建中指导组件的实现者。
3)而实现 (implement)一个接口(interface)的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
4)另外,抽象类不能产生对象的,但可以由它的实现类来声明对象。 有鉴于此,在实现接口时,我们也常写一个抽象类,来实现接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用,省去在每个都要实现通用的方法的困扰。
编辑本段实例
为了让一个类成为抽象类,至少必须有一个纯虚函数。纯虚函数形式如下: virtual return type function() = 0; 例如,类A有两个纯虚函数lock()、unlock()和一个虚析构函数: class A { public: virtual void lock(void)=0; virtual void unlock(void)=0; virtual ~A(void); } 将函数lock()和unlock()初始化为0使它们成为纯虚函数,没有0这个初使化器,它们仅仅是虚函数。 class B : public A { protected: pthread_mutex_t x; public: B(void); ~B(void); virtual void lock(void) { ead_mutex_lock(x); } virtual void unlock(void) { ead_mutex_unlock(x); } } 抽象类对于提供模式、蓝图和后代类遵循的原则有用。如果遵循了蓝图的语义,后代类的行为可能按抽象类提供者和使用者所期望的那样。通过使用抽象类,C++程序员可以提供C++组件的规范,在它的构建中指导组件的实现者。
展开全部
java中的抽象类的用法是声明一部分不需要实现的方法,也允许实现一些方法。
而用法的精髓在于,实现的方法去调用声明未实现的方法。就可以直接调用子类去实现该方法的子类方法。就可以实现动态绑定。不懂可以追问。
而用法的精髓在于,实现的方法去调用声明未实现的方法。就可以直接调用子类去实现该方法的子类方法。就可以实现动态绑定。不懂可以追问。
追问
能给我写个例子吗
追答
abstract class A {
public String getName();
public void call() {
getName();
}
}
public class B extend A{
public String getName() {
return "B";
}
}
/**
*调用类
*/
public class C {
public static void main(String[] args) {
A a = new B();
a.call();
}
}
主要应用是动态绑定,这是最简单的例子。还可以加入工厂方法等。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-11-01
展开全部
一般是用来统一某类的属性,比如说动物都有吃东西的特性,但是不同动物吃东西的方式不同,所以用个抽象类统一定义,不同的再继承,然后实现自己的方式.....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
abstract class 类名{}
interface 类名{}
所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中有用足够的信息来描绘一个具体的对象,这样的类就是抽象类。
interface 类名{}
所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中有用足够的信息来描绘一个具体的对象,这样的类就是抽象类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抽象类只能用来继承,不能实例话。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |