8、抽象类
抽象类的基本概念:
(1)很多具有相同特征和行为的对象可以抽象成一个类,很多具有相同特征和行为的类可以抽象为一个抽象类。
(2)使用abstract关键字声明的类称为抽象类。
//定义一个抽象类
abstract class Animal
{
public abstract void move(); //方法的声明,抽象方法只有声明,没有实现
}
abstract class Person extends Animal
{
private String name;
//...
public abstract void eat();//抽象方法
}
//具体类,在抽象类之下创建
class Man extends Person
{
public void eat()
{
System.out.println("我是男人,我爱吃肉");
}
public void move()
{
System.out.println("我爱跑步");
}
}
class Woman extends Person
{
public void eat()
{
System.out.println("我是女人,我爱吃香蕉");
}
public void move()
{
System.out.println("我爱逛街");
}
}
把上面两个代码组合起来,主函数的类要用Man和Woman,这样就能输出男人和女人喜欢吃的和喜欢干什么:
public class a
{
public static void main(String[] args)
{
Man man = new Man();
man.eat();
man.move();
Woman woman = new Woman();
woman.eat();
woman.move();
}
}
//定义一个抽象类
abstract class Animal
{
public abstract void move();//抽象方法,这里面没有大括号,可以说这个是专门用来被继承的
}
abstract class Person extends Animal
{
private String name;
//...
public abstract void eat();//抽象方法,这里面没有大括号
}
//具体类
class Man extends Person
{
public void eat()
{
System.out.println("我是男人,我爱吃肉");
}
public void move()
{
System.out.println("我爱跑步");
}
}
class Woman extends Person
{
public void eat()
{
System.out.println("我是女人,我爱吃香蕉");
}
public void move()
{
System.out.println("我爱逛街");
}
}
/*
结果:
我是男人,我爱吃肉
我爱跑步
我是女人,我爱吃香蕉
我爱逛街
*/
抽象类的规则
1、抽象类可以没有抽象方法,有重写方法的类必须是抽象类
2、非抽象类继承抽象类必须实现所有抽象方法
3、抽象类可以继承抽象类,可以不实现父类抽象方法
4、抽象类可以有方法实现和属性
5、抽象类不能被实例化
6、抽象类不能声明为final
7、抽象类可以有构造方法