abstract
抽象类是不能被实例化的类,可以由其子类来实例化,就像模板一样(就像猫科,犬科),目的是根据其格式和要求来新建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。
抽象类中的两种方法:抽象方法和非抽象方法
抽象方法前面由abstract关键字,这种方法只声明返回的数据类型、方法名称和所需的参数,没 有方法体,也就是说抽象方法只需要声明而不需要实现。
非抽象方法和正常类中方法一样。
抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。
抽象类中可以包含构造方法, 但是构造方法不能被声明为抽象。
abstract不能与private、static、final、native并列修饰同一个方法或类。
程序举例:
abstract class Animal //定义抽象类
{
String str;
Animal(String s) //定义抽象类的一般方法
{
str=s;
}
abstract void eat(); //定义抽象方法
}
class Horse extends Animal //定义继承Animal的子类
{
String str;
Horse(String s)
{
super(s); //调用父类的构造方法
}
void eat() //重写父类的抽象方法
{
System.out.println("马吃草料!");
}
}
抽象类和接口的区别
1.一个类可以实现多个接口,但只能继承一个抽象类,它不能是猫科类同时还是犬科类
2.一个抽象类可以有若干抽象方法(可以是抽象的,也可以是非抽象的),接口里的都是抽象方法,即使不用abstract关键字
3.抽象类可以有构造方法,而接口不能有
4.抽象类的修饰符可以是public ,private ,protected或无修饰符(包内可见),而接口的修饰符只能是public ,或无修饰符(包内可见)
5.抽象类是从object类派生而来,它继承了object的clone()和equals()方法。