------- android培训、java培训、期待与您交流! ----------
抽象类,抽象方法何时定义?
当类中的某个方法是不应该被调用,没用任何意义,必须要被其子类覆盖时,定义抽象方法。
怎么理解抽象类???
抽象类首先是一个类,其次它是抽象的。除了不能够创建其实例,其余都和类一样。
抽象方法的语法:
abstract +class+类名+其它内容
抽象类相关语法:
1.抽象类是抽象的类型,和接口一样,在编程中不能通过new关键字创建其对象。
2.抽象类可以包含抽象方法。注意:这里说是可以,而非必须,只要一个类使用了abstract修饰,那么它就是抽象类,即使类中没有抽象方法。
3.抽象类中的抽象方法可以使用除private以外的所以访问控制符修饰。
4.如果一个类继承了抽象类,那么它或者实现父类中的抽象方法,或者将自己声明为抽象类。
5.当一个类声明实现某个或者某些接口,但却没有实现接口中定义的所有抽象方法时,那么这个类也必须声明为抽象类。
接口和抽象类的区别
1:抽象类只能被单继承
接口可以多实现,接口的出现避免了多继承的局限性。
2:抽象类中的数据特点:
成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可以是非抽象方法
构造方法:有构造方法
接口中的数据特点:
成员变量:是常量。默认修饰 public static final
成员方法:都是抽象方法。都有默认修饰 public abstract
构造方法:没有构造方法
3:抽象类中定义的是继承体系中的共性功能。
接口中定义的是继承体系中的扩展功能。
4:抽象类被继承是"is a"关系:xx是yy的一种
接口被实现是"like a"关系:xx像yy的一种
随笔代码:
abstract class Student
{
abstract final void study();
//abstract void study1();
void sleep()
{
System.out.println("躺着");
}
}
/*
class ChongCiStudent extends Student
{
void study()
{
System.out.println("chongci study");
}
}
class BaseStudent extends Student
{
void study()
{
System.out.println("base study");
}
}
class AdvStudent extends Student
{
void study()
{
System.out.println("adv study");
}
}