@tcxu 你好,想跟你请教个问题:
划红线处什么意思?抽象类的构造方法无法被外部类实例化对象调用?这句话是什么意思?
回复抽象方法肯定存在于抽象类或接口之中。 若在一个类的定义开头,冠以关键字"abstract",此类就被视为抽象类。由此导致,凡是定义带上了"abstract"帽子的类,都不能被实例化。类定义中一旦含有抽象方法,它就必须带"abstract"帽子。然而,带上"abstract"帽子的类中也可能没有抽象方法。就是说"抽象类中可以没有抽象方法"。
回复@tcxu : 抽象类的构造方法无法被外部类实例化对象调用的意思是说抽象类无法实例化,只有抽象类的实现类(子类)才能实例化,是这样的意思吗?
回复没错。抽象类无法实例化,只有抽象类定义中的全部抽象方法都有了定义(都具体化了),这个类才能变为可以被实例化的类, 亦可称作 它的 子类 subclass, 或称作它的派生类 Derived class。这时, 这个子类,才能被实例化。
回复@tcxu : “只有抽象类定义中的全部抽象方法都有了定义(都具体化了),这个类才能变为可以被实例化的类”抽象类中可以没有抽象方法,全部都是一般方法,那这样不就可以实例化了吗?
回复如果将一个可以被实例化的类(没有抽象方法,全部都是一般方法的类)的定义开头添加关键字 "abstract",那麽这个类就不能再被实例化了, 因为它已经被视为抽象类。 这样的类是不可以被实例化, 不能生成对象的。
的确,(JAVA)抽象类的构造方法无法被外部类实例化对象调用。因为抽象类的定义之中,有抽象方法,即尚未定义好 ( 描述对象/实体功能 ) 的方法,故调用它的构造方法,无法创建一个具有实际功能的实体。比如, 因为具体的吃饭方法尚未确定,此刻只能定义一个抽象类 class Person,至于吃饭方法,尚无定义。此刻吃饭方法是抽象的。仅根据这个抽象类 Person 的定义,就不可能创建实例/对象,因为无法确定吃饭的功能/方式。于是后来,在 定义 继承这个抽象类 Person 的具体类 (中国人 Chinese、美国人 American、或 印度人 Indian)的时候,必须完成吃饭方法的定义, 以便,根据不同的子类 创建出各种人实体。
总之, 抽象类的构造方法无法被外部类实例化对象调用, 因为 根据/调用 它(抽象类的构造方法) 无法创建 实体/对象。
详见:Java的抽象类 和 它的极致情况:接口https://my.oschina.net/tcxu/blog/1524590
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(6)
回复
抽象方法肯定存在于抽象类或接口之中。 若在一个类的定义开头,冠以关键字"abstract",此类就被视为抽象类。由此导致,凡是定义带上了"abstract"帽子的类,都不能被实例化。类定义中一旦含有抽象方法,它就必须带"abstract"帽子。然而,带上"abstract"帽子的类中也可能没有抽象方法。就是说"抽象类中可以没有抽象方法"。
回复
@tcxu : 抽象类的构造方法无法被外部类实例化对象调用的意思是说抽象类无法实例化,只有抽象类的实现类(子类)才能实例化,是这样的意思吗?
回复
没错。抽象类无法实例化,只有抽象类定义中的全部抽象方法都有了定义(都具体化了),这个类才能变为可以被实例化的类, 亦可称作 它的 子类 subclass, 或称作它的派生类 Derived class。这时, 这个子类,才能被实例化。
回复
@tcxu : “只有抽象类定义中的全部抽象方法都有了定义(都具体化了),这个类才能变为可以被实例化的类”抽象类中可以没有抽象方法,全部都是一般方法,那这样不就可以实例化了吗?
回复
如果将一个可以被实例化的类(没有抽象方法,全部都是一般方法的类)的定义开头添加关键字 "abstract",那麽这个类就不能再被实例化了, 因为它已经被视为抽象类。 这样的类是不可以被实例化, 不能生成对象的。
的确,(JAVA)抽象类的构造方法无法被外部类实例化对象调用。因为抽象类的定义之中,有抽象方法,即尚未定义好 ( 描述对象/实体功能 ) 的方法,故调用它的构造方法,无法创建一个具有实际功能的实体。比如, 因为具体的吃饭方法尚未确定,此刻只能定义一个抽象类 class Person,至于吃饭方法,尚无定义。此刻吃饭方法是抽象的。仅根据这个抽象类 Person 的定义,就不可能创建实例/对象,因为无法确定吃饭的功能/方式。于是后来,在 定义 继承这个抽象类 Person 的具体类 (中国人 Chinese、美国人 American、或 印度人 Indian)的时候,必须完成吃饭方法的定义, 以便,根据不同的子类 创建出各种人实体。
总之, 抽象类的构造方法无法被外部类实例化对象调用, 因为 根据/调用 它(抽象类的构造方法) 无法创建 实体/对象。
详见:
Java的抽象类 和 它的极致情况:接口
https://my.oschina.net/tcxu/blog/1524590