Java学习-abstract

package mypackage;

//类中只要有一个abstract,则类就必须是abstract
public 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());


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值