1.抽象类
2.抽象类的特点
3.抽象类的作用
4.abstract关键字
5.抽象类与接口interface关键字
1.抽象类
什么是抽象类?就是笼统地描述一类东西,例如动物类,就是抽象类,因为动物可以有很多种,有猫,有狗,有猴子。那抽象类怎么实现呢?用关键字abstract修饰。
2.抽象类的特点
1.抽象类不能被实例化,对抽象类用new方法是错误的。
2.抽象类中允许有一种或者多种或者全部抽象方法。抽象方法就是用abstract关键字修饰的方法。
‘ 3.抽象类的子类(A类)继承抽象类后,必须要把抽象类中的所有抽象方法都重写一遍,否则A类将会自动也变成抽象类,不能被继承。
4.抽象类也有构造函数。虽然抽象类不能实例化,但抽象类的子类在实例化的时候依然会调用其父类的构造函数。
5.抽象类能定义抽象方法,普通类不行。抽象类不能实例化,普通类可以。
6.抽象类中是可以没有抽象类的,这样做的作用仅仅是让该类不能实例化。
3.抽象类的作用
抽象类主要用于被继承,继承了抽象类的子类,就必须要有抽象类所定义的抽象方法。例如一个抽象类是动物类,那么继承自动物类的子类(可能是猫,狗),都必须要有人类所定义的抽象方法,例如:
abstract class Animal //动物抽象类
{
abstract void move();
abstract void attack();
}
class Monkey extends Animal //具体化抽象类的子类
{
void move()
{
System.out.println("climbing");
}
void attack()
{
System.out.println("bite");
}
}
class Dog extends Animal //具体化抽象类的子类
{
void move()
{
System.out.println("running");
}
void attack()
{
System.out.println("bite");
}
}
public class Main
{
public static void main(String[] args)
{
Monkey mon = new Monkey();
mon.move();
}
}
上面的猴子类和狗类都必须有动物类(抽象类)所定义的方法,就是move()和attack(),否则就不能创建对象。
换句话说,就是多个类中若有共同的属性,则把共同的属性抽取出来,形成一个抽象类,然后继承该抽象类即可。这点在写需求时可以用到。
4.abstract 关键字
1.abstract可以修饰类和方法,修饰类就是抽象类,修饰方法就是抽象方法,只有抽象类中才能有抽象方法。
2.抽象方法用于被子类继承后重写。即是父类的抽象方法是空的,必须由子类继承之后在子类中由子类实现,这可以达到不同子类可以根据自己的特性来定义自己从父类继承过来的抽象方法。
3.abstract不能与final关键字共存,因为final关键字修饰的类是不能被继承的。
4.abstract不能与private关键字共存,因为私有的东西不能继承。
5.abstract不能与static关键字共存,当static修饰方法时,该方法可以通过类名直接调用,而abstract修饰的抽象方法是不能被调用的。
5.抽象类与接口interface关键字
1.当一个抽象类中的所有成员只有抽象方法时,便是一个接口,可以用关键字interface表示。
2.接口中的成员有两种:1.全局常量 2.抽象方法
3.接口中的权限必须是public,若没写public,会自动加上public。
4.接口中有抽象方法,因此接口也是抽象类,不可以实例化。所以其子类也必须覆盖了接口中所有的抽象方法后,才能实例化,否则他也是一个抽象类。
代码 演示:
interface inter
{
public static final int NUM=4;
public abstract void interface1();
public abstract void interface2();
}
上面的代码中,有全局常量 NUM,也有抽象方法。除此之外没有其他类型的成员了。而接口是用于被子类继承,再由子类根据自身需要自定义对应接口的。