abstract:
抽象类不能被实例化(new),包含属性、方法、构造器(此构造器不用来初始化实例,只用来被子类调用,其构造函数是提供给子类创建对象的时候初始化父类的属性的),故只能被继承。抽象中用的是继承extends。可以包含非抽象方法和变量,但是若有子类继承该抽象类,调用代码如下:
package com.tt.abstracttest;
//该类为抽象类,定义了成员变量a、抽象方法fun(),非抽象方法fun2(),由于是非抽象的必须带方法体,否则报错。会提示你加body
public abstract class Test {int a=2;public abstract void fun();public int fun2() {return 1;}
}
package com.tt.abstracttest;
//该类为子类。
public class Test2 extends Test{ @Overridepublic void fun() {//必须重写父类的抽象方法// TODO Auto-generated method stub }public static void main(String[] args) { Test2 t=new Test2();//实例化子类对象。其中该类有一个隐含的隐含的无参构造,否则无法创建该对象。父类也有一个无参构造,隐含的。int b=t.a;System.out.println(b); System.out.println(t.fun2());}
}
运行效果如下: