JAVA中抽象类的一些总结

  1. 抽象类和普通类一样,有构造函数。抽象类中有一些属性,可以利用构造方法对属性进行初始化。子类对象实例化的时候先执行抽象类的构造,再执行子类构造。
  2. 抽象类不能用final声明。因为抽象类必须有子类继承,所以抽象类不能使用final定义。
  3. 抽象类不能用static进行声明,但是抽象类中的内部类可以使用static声明。
abstract class A
{
static abstract class B
{
public abstract void print();
}
} class X extends A.B
{
public void print()
{
System.out.println(this.getClass());
}
} public class Hello
{
public static void main(String[] args) throws Exception
{
A.B ab = new X();
ab.print();
}
}

输出:class X

4.抽象类和普通类一样,可以有static方法,且可以通过类名称.方法名的方式进行调用

abstract class A
{
public static void test()
{
System.out.println("抽象类中的static方法");
}
} public class Hello
{
public static void main(String[] args) throws Exception
{
A.test();
}
}

5. 有些时候抽象类只需要一个特定的系统子类操作,可以对外部隐藏抽象类的实现。这样的设计在系统类库中比较常见,目的是为了隐藏我们不需要的子类实现。

abstract class A
{
public abstract void print(); private static class B extends A
{
public void print()
{
System.out.println("打印消息测试");
}
} public static A getInstance()
{
return new B();
}
} public class Hello
{
public static void main(String[] args) throws Exception
{
A a = A.getInstance();
a.print();
}
}

6. 观察下面的输出。

abstract class A
{
public A()
{
this.print();
} public abstract void print();
} class B extends A
{
private int num = 100;
public B(int num)
{
super();
this.num = num;
} public void print()
{
System.out.println(this.num);
}
} public class Hello
{
public static void main(String[] args) throws Exception
{
B b = new B(30);
}
}

上面代码输出: 0

上一篇:java集合类(二)List学习


下一篇:公共表达式消除(UVa 12219)