黑马程序员技术交流社区

标题: 抽象类疑问 [打印本页]

作者: 孙飞    时间: 2012-6-22 19:04
标题: 抽象类疑问
本帖最后由 feigecal 于 2012-6-22 19:30 编辑

抽象类不可以创建对象,因为对象调用抽象方法没有意义。但如果抽象父类中有非抽象的方法,可不可以创建对象?子类如果没有使用抽象父类中的抽象方法,那么子类是不是就不用复写所有的抽象方法了?
作者: 孙峰    时间: 2012-6-22 19:08
这些其实你自己都已经知道了啊, 只要有抽象方法,那么就得是在抽象类中,是抽象类就不能实例对象。
还有就是,子类必须全部覆写父类的抽象方法。
作者: 贾飞雨    时间: 2012-6-22 19:25
抽象类不可以创建对象,因为对象调用抽象方法没有意义。但如果抽象父类中有非抽象的方法,可不可以创建对象?不可以,因为类是抽象的,就没有办法对其进行实例化,
你没有实例化,有该怎么创建呢?抽象的类都不可以创建对象,这个你以后记住,



子类如果没有使用抽象父类中的抽象方法,那么子类是不是就不用复写所有的抽象方法了?
子类和父类是继承关系,如果子类没有使用抽象父类中的抽象方法,那么子类就是抽象的,你不复写抽象方法,那你建立这个子类干什么?
作者: 孙飞    时间: 2012-6-22 19:30
yufeiant 发表于 2012-6-22 19:25
抽象类不可以创建对象,因为对象调用抽象方法没有意义。但如果抽象父类中有非抽象的方法,可不可以创建对象 ...

听听是这个样子啊,谢了
作者: 孙飞    时间: 2012-6-22 19:37
yufeiant 发表于 2012-6-22 19:25
抽象类不可以创建对象,因为对象调用抽象方法没有意义。但如果抽象父类中有非抽象的方法,可不可以创建对象 ...

麻烦再问一下。为什么那个String一直是大写,和int不一样呢?
作者: 贾飞雨    时间: 2012-6-22 19:50
因为String是一个类啊,而int 是一个变量类型,所有的变量类型都是小写的,但是系统规定是大写的
作者: 孙飞    时间: 2012-6-22 19:57
yufeiant 发表于 2012-6-22 19:50
因为String是一个类啊,而int 是一个变量类型,所有的变量类型都是小写的,但是系统规定是大写的 ...

abstract class Employee
{
        private String name;
        private String id;
        private double pay;
        Employee(String name,String id,double pay)
        {
                this.name=name;
                this.id=id;
                this.pay=pay;
        }
        public abstract void work();
}
class Manager extends Employee
{
        private int jiangJin;
        Manager(String name,String id,double pay,int jiangJin)
        {
                super(name,id,pay);
                this.jiangJin=jiangJin;
        }
        public void work()
        {
                System.out.println("ok");
        }
}
class Test
{
        public static void main(String[] args)
        {
                Manager m= new Manager();//这里找不到符号,怎么回事啊?
                m.work();
                System.out.println("Hello World!");
        }
}

作者: 贾飞雨    时间: 2012-6-22 20:25
  Manager(String name,String id,double pay,int jiangJin)你自己写了这句有参构造方法以后,系统就不会默认给你加上默认无参构造方法,
Manager(){}在这个类里写上这句就可以找到符号了,或者在下面这里的manager m = new Manager();这句的括号里加上你要输入的值,让他调用有参构造方法,这样也可以
作者: 贾飞雨    时间: 2012-6-22 20:33
还得加一句  上面的父类也要加构造无参函数,每类的建立都先加上构造无参,这是一个号习惯
作者: 孙飞    时间: 2012-6-24 18:38
yufeiant 发表于 2012-6-22 20:33
还得加一句  上面的父类也要加构造无参函数,每类的建立都先加上构造无参,这是一个号习惯 ...

多谢指教




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2