A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李朋朋 中级黑马   /  2012-7-18 15:01  /  1687 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么情况下应用抽象类?如何应用?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
1,如果有多个接口实现有公用的部分,则使用抽象类,然后集成它;
2,应用方式
    #不能对字段抽象;
    #不能对 private 抽象;
    #可以含有非抽象的成员;
    #不能实例化;
    #只能从一个类继承;
    #可以被抽象类继承,此时不必实现抽象成员;
    #可以被普通类继承,此时必须实现抽象成员;
    #实现抽象成员时要加override;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
声明一个抽象方法使用abstract关键字。
一个类中可以包含一个或多个抽象方法。
抽象类中可以存在非抽象的方法。
抽象类不能被直接被实例化。
实现抽象类用“:”(冒号),实现抽象方法用override关键字。
抽象类可以被抽象类所继承,结果仍是抽象类。
抽象方法被实现后,不能更改修饰符。
例子如下:
    public abstract class Person
    {
        public abstract void SayHello();
        public void about()
        {
            Console.WriteLine("Abstract Demo");
        }
    }

    public class Student : Person
    {
        public override void SayHello()
        {
            Console.WriteLine("SayHello");
        }
    }
    class MainClass
    {
        public static void Main()
        {
            new Student().SayHello();
        }
    }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
抽象类的特点:
1,没有方法体的方法是抽象方法,一定定义在抽象类中。
2,抽象类和抽象方法必须用abstract关键字所修饰。
3,抽象类不可以被实例化。为啥?因为调用抽象方法没有意义。
4,抽象类必须由其子类覆盖掉所有的抽象方法后,其子类才可以进行实例化。否则,该子类还是一个抽象类。

细节问题:
1,抽象类一定是个父类?        是。
2,抽象类是否有构造函数?      有,因为是给子类对象提供初始化动作的。
3,抽象类中是否可以不定义抽象方法?   可以的。为了不让其创建对象。这种情况在java的体系中就有存在,windowAdapter
总结:abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。abstract class表示的是"is-a"关系
抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
当对描述一件不确定内容的事物或方法的时候,就用abstract来修饰该事物或方法。
被abstract修饰的方法就是抽象方法,被abstract修饰的类就是抽象类。
如果一个类中含有抽象方法,那这个类必须是抽象的。
而一个抽象类中可以有抽象内容,也可以有非抽象内容。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马