抽象类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类相关的知识,希望对你有一定的参考价值。

当我们在描述一类事物时,发现该事物确实存在某种行为,但这种行为目前不具体,那么我们就可以抽象这种行为的声明,但是不去实现这种行为,

这个时候这种行为我们就称作抽象行为。

定义一个抽象类要注意的事项:

1、如果一个函数没有函数体,那么该函数必须用abstract修饰,把该函数修饰为抽象函数;

2、包含抽象函数的类一定是抽象类,用abstract修饰;

3、如果一个非抽象类在继承了抽象类后,必须要把该抽象类的所有抽象方法进行重写;

4、抽象类中是可以存在非抽象方法的;

5、抽象类可以不存在抽象方法,语法上是支持的;

6、抽象类是不能创建对象的,抽象类中存在抽象方法,而用创建好的对象调用抽象方法是没有意义的;

7、抽象类是存在构造函数的,其构造函数是提供给子类创建对象的时候初始化父类的属性;

abstract是不能与private、static、final共同修饰一个方法的。

 

abstract class Animal{
  String name;
  String color;

  public Animal(String name,String color){
    this.color=color;
    this.name=name;
  }

  public void eat(){
    System.out.println(name+"正在吃东西...");
  }
  public abstract void run();
}

 

class Fish extends Animal{
  //构造方法
  public Fish(String name, String color) {
    super(name, color);//调用父类的构造函数初始化父类的属性
  }

 

  public void run() {
    System.out.println(name+"游");
  }
}

 

class Dog extends Animal{
  public Dog(String name, String color) {
    super(name, color);//调用父类的构造函数初始化父类的属性
  }

  public void run() {
    System.out.println(name+"跑");
  }
}


class Demo{
  public static void main(String[] args){
    Dog g = new Dog("哈士奇","白色");
    g.run();
    g.eat();
    Fish f = new Fish("鲨鱼","灰色");
    f.eat();
  }
}

 

以上是关于抽象类的主要内容,如果未能解决你的问题,请参考以下文章

抽象类及抽象类

抽象类与多态

抽象类和抽象方法

抽象类VS接口

抽象类

抽象类抽象方法