首页 > 编程 > Java > 正文

Java学习-abstract

2019-11-06 07:00:14
字体:
来源:转载
供稿:网友
package mypackage;//类中只要有一个abstract,则类就必须是abstractpublic abstract class Person{    //当在定义一个类时,其没有属性(这个类中没有定义实例域),实际其没有任何意义    //在这里,没有任何东西可以描述一个人    //当然,可以返回一个空串,表示这个人没有什么可以描述的    //比如上大街上,找个路人问我要找一个人,别人问你有没有什么可以描述一个人的,你说没有,那这个人怎么找    //就是一个空的、虚的、没有意义的人//    public String getDescription()//    {//        return "the person has nothing";//    }    //但通常,这不是一个好的办法    //既然这是一个没有意义的类,那给其提供一个没有意义的方法,实际也没什么意义,还不如不要    //但不要又不太好描述,所有就有了抽象的概念    public abstract String getDescription();    //将一个方法定义为abstract,可以不提供具体的实现,而有子类来实现    //但定义为一个抽象方法后,该类就必须是一个抽象类,需要把类也定义为abstract        //abstract类中,同样还是可以定义具体的实例域和方法的,只不过该类还是不能定义一个对象    //只不过,这样的做法看起来好像有一点点混乱,既然abstract类没有意义,怎么又会有代表这个类的属性    //但好处是,可以将大量重复的、相同的“东西”放到abstract类中进行统一的处理    //这里的“东西”不太好概括,因为很有可能它们和这个类本身没有什么关系,只是找到一个可以统一处理的地方    //所以往后就有了接口的说法    PRivate String m_sName = "Pernson";    public String getName()    {        return m_sName;    }}//定义一个学生,学生也是一个人,同时,它有自己的身份“学生”class Student extends Person{    String m_sIdentify = "student";    public String getDescription()    {        return m_sIdentify;    }}

需要注意,abstract类是不能定义对象的,会报错。

但其变量和继承中一样,是可以引用子类对象的。

      //abstract类是不允许定义一个对象的,因为它没有实际意义//        Person p = new Person();//        System.out.println(p.getDescription());        //abstract类不允许定义对象,其子类只要实现了就是可以的        Student st = new Student();        Person p = st;//并且,abstract类变量同样是可以引用子类对象的        System.out.println(st.getDescription());        System.out.println(p.getDescription());        System.out.println(p.getName());


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表