Java之抽象类

抽象类通常用来作为一个类族的最顶层的父类,用最底层的类表示现实中的具体事物,用最顶层的类表示该类族所有的事物的共性。

抽象方法:

1、在定义Java方法时可以只给出方法头,而不给出方法内部实现代码,这种的方法称为抽象方法;

2、凡是没有方法体的方法必须用关键字abstract修饰为抽象方法;

3、凡是含有抽象方法的类必须声明为抽象类。

抽象类:

1、用abstract关键字修饰一个类时,该类叫做抽象类;
2、包含抽象方法的类必须声明为抽象类,但是一个抽象类中可以不包含任何抽象方法;
3、抽象类不一定有抽象方法,有抽象方法的一定是抽象类。

abstract class  A  //如果f方法没有方法体,则必须的在class前加 abstract  如果f方法含有方法体,则class前面可加也可不加abstract ,因为“一个抽象类中是可以不包含任何抽象方法”
{
	private int i;
	public abstract void f();  //如果f方法没有方法体,则f方法必须的声明为抽象方法,即必须的在前面加abstract
}

class TestAbsClass_1
{
	public static void main(String[] args)
	{
		System.out.println("今天我很高兴!");
	}
}


抽象类实现多态:

不能new出抽象类对象,但可以定义一个抽象类的引用。

例如,假设A是抽象类,B是A的子类且完全实现了A 的所有抽象方法,则:

A aa = new A();    //error
A aa = new B();    //OK
我们可以把一个子类对象的地址赋给抽象类的引用,然后通过抽象类的引用调用子类从父类继承过来的方法,即抽象类也可以实现多态。

abstract class A
{
	public abstract void f();
}

class B extends A
{
	public void f()
	{
		System.out.println("哈哈");
	}
}

public class TestAbs_1
{
	public static void main(String[] args)
	{
		//A aa1 = new A();  //error
		A aa2 = null;       //可以定义一个抽象类的引用
		aa2 = new B();      //将子类对象的地址赋给抽象类的引用
		aa2.f();            //用抽象类的引用访问子类的方法  这就是多态
	}
}





原文地址:https://www.cnblogs.com/yzy-blogs/p/6597347.html