-
抽象类:类与类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。
-
类本身是不存在的,所以抽象类无法创建对象(无法实例化)。
-
抽象类属于什么类型:引用数据类型。
-
语法:
-
[修饰符列表] abstract class 类名{
类体;
}
-
-
抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。
-
abstract 和final不能同时出现。
-
抽象类的子类可以是抽象类。也可以是非抽象类。
-
抽象类无法实例化,但是有构造方法。这个构造方法供子类使用的。
-
抽象类关联到一个概念:抽象方法:表示没有实现的方法,没有方法体的方法。
- public abstract void doSome();
- 无方法体,以分号结尾。
- 有abstract关键字。
- 抽象类中可以有非抽象方法。
-
抽象类中不一定有抽象方法。抽象方法必须在抽象类中。
-
一个非抽象的类,必须将抽象类中的抽象方法覆盖/重写、实现。
public class AbstractTest{ public static void main(String[] args){ } } abstract class Account{ } class CreditAccount extends Account{ }
public class AbstractTest{ public static void main(String[] args){ Animal a = new Bird(); //面向抽象编程。 //面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力。这种编程思想符合OCP原则。 a.move(); //编译时move是Animal的,运行时是Bird的。 } } abstract class Animal{ public abstract void move(); } //如果Bird是一个抽象类,Animal中的抽象方法可以不重写。 class Bird extends Animal{ //需要将从父类继承过来的抽象方法进行覆盖/重写,或者实现。 //把抽象方法实现。 public void move(){ System.out.println("鸟儿在飞翔"); } }
-
Java语言中凡是没有方法体的方法都是抽象方法????
- 不对:Object类中就业很多方法没有方法体,都是以;结尾的。但是他们都不是抽象方法,例如:public native int hashCode(); 这个方法底层调用C++写的动态链接库程序。前面修饰符列表中没有abstract,有一个native,表示调用JVM本地程序。
网友评论