java中抽象类可以被实例化吗

2024-07-13 05:45:29 浏览

我们可以明确告诉你,Java中的抽象类不可被实例化。

java中抽象类可以被实例化吗

因为抽象类的目的跟接口是一样的,将某一些类的共有操作进行抽取,从而提高代码的重用,减少代码冗余。只不过抽象类相对于接口而言,可以拥有自己的非抽象成员罢了。

当然,抽象类虽然不能被实例化,但却有构造器,这里我们需要明白一点,构造器是用来在对象实例化时进行一些初始化操作,而不是通过调用构造器来对象进行实例化。而抽象类中构造器的作用仅仅是为了让子类在初始化的时候可以调用其构造器来对自己进行初始化。

说这么多,估计很多人还是一头雾水,我写个例子我想应该就有很多人明白了。

测试类一:直接实例化抽象类

从以上结果我们可以得出,抽象类是不可被实例化的。

测试类二:将子类实例化后赋给抽象类

运行结果我们可以知道,抽象类的构造器确实被调用了。

综上所述,在Java中抽象类不可被实例化,但却存在构造器,构造器的作用仅仅是在其子类实例化时对抽象类进行初始化。

instance本身没什么意义的,通常是“instanceof”联合使用才有意义。举例:if(“aaaa”instanceofString){//代码模块},也就是如果“aaaa”可以被实例化为字符串类型,那么判断语句就是真,之后执行“代码模块”。解释:实例化,通常就是说来判断一个输入值是否可以强制转换成另外一个类型,这样的好处就是,先判断可以实例化,之后在进行强制转换,这样就不会报错,增加代码严密性。

引用: 在这个程序里面的a.getx()自定义方法,就需要返回值. 因为前面的实例变量x为整型 所以返回值类型也要是整型 然后用return返回x的值50 用a.getx()调用 使用System.out.println();输出return返回来的值 public class Test{ private int x=50; public int getx(){ return x; } public static void main(String[] args){ Test a=new Test(); System.out.println(a.getx()); } } 运行结果为50

当子类重写了父类方法,向上造成后调用的是子类方法;子类没有重写父类方法,向上造型后调用的是父类方法。public class Test1 { public static void main(String[] args) { A k=new B(); k.sayHi(); k.hello(); } }class A { public void sayHi(){ System.out.println("我是父类"); } public void hello(){ System.out.println("我是父类hello"); }}class B extends A{ public void sayHi(){ System.out.println("我是子类"); }}输出结果:我是子类我是父类hello

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。