Java中有关抽象类的基础学习

开发 后端
本文向您介绍Java中的抽象类和抽象方法,帮助我们明确含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法。

    1.抽象类: 不能手动创建对象(JVM可以创建抽象类的对象),但是可以声明抽象类型的引用。

 public class TestAbstract1{
public static void main(String[] args){
//Animal a=new Animal(); //error

Animal a=null;
a=new Dog();
}
}
abstract class Animal{
}
class Dog extends Animal{
}

  2.抽象方法:有方法名的定义,没有实现,(只定义了能做什么,没定义怎么做)

    抽象方法的好处是允许方法的定义和实现分开。

 abstract class Animal{
public abstract void eat();
}

    抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法

    抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。

 abstract class Animal{
public void run(){}
public abstract void sleep();
public abstract void eat();
}
class Dog extends Animal{
public void sleep(){
System.out.println("Dog sleep.");
}
public void eat(){
System.out.println("Dog eat.");
}
}
abstract class Cat extends Animal{
public void eat(){
System.out.println("Cat eat.");
}
}

    可以声明父类类型子类对象,利用多态调用抽象方法
 public class TestAbstract1{
public static void main(String[] args){
Animal a=null;
a=new Dog();
a.sleep();
a.eat();
}
}
    抽象类有构造方法,有父类的,也遵循单继承的规律
 class E{}
abstract class Animal extends E{
public Animal(){
super();
}
}

    3.多种修饰符的连用问题:

    public protected default private static final abstract

    可以连用:

    public static

    private static

    public final

    public static final

    不可以连用:abstract final void eat();

    private abstract void eat();

    static abstract void eat();

    abstract不能和final,private,static连用

【编辑推荐】

  1. Red Hat CEO呼吁甲骨文继续保持Java开放
  2. 自学Javabean迅速成为Java高手
  3. Java通过JNI调用C语言的方法
  4. 高手Java核心技术学习笔记
  5. 成为Java高手需要注意的25个学习目标
责任编辑:王观 来源: 中国IT实验室
相关推荐

2009-08-03 18:12:31

C#抽象类

2011-07-06 10:33:31

C#

2012-02-29 09:32:01

Java

2010-03-04 09:40:04

Java接口抽象类

2011-07-12 15:58:48

java抽象类接口

2009-04-30 15:15:01

Java抽象类接口

2011-07-10 14:07:59

JAVA

2009-07-22 07:50:00

Scala二维布局库抽象类

2011-05-19 18:01:56

JAVA

2015-03-23 09:33:43

Java抽象类Java接口Java

2009-06-16 11:30:00

Java抽象类Java接口

2009-06-14 21:31:29

Java抽象类Java接口

2011-12-22 10:48:21

Java

2009-09-04 13:31:33

C#抽象类

2011-06-28 10:55:20

C#接口抽象类

2009-12-02 14:55:46

PHP抽象类abstr

2009-12-07 14:53:13

PHP抽象类应用

2009-11-02 17:49:05

VB.NET抽象类

2010-01-14 18:08:08

VB.NET抽象类

2020-10-19 13:03:16

Java 8接口抽象类
点赞
收藏

51CTO技术栈公众号