抽象类/方法

文章目录

  • 前言
  • 一、抽象类
  • 1.抽象类的定义
  • 2.抽象类的使用
  • 二、抽象方法
  • 1. 抽象方法的定义
  • 2.抽象方法的使用
  • 三、面试题
  • 1.抽象类和抽象方法的关系
  • 2.抽象类中可以有什么?
  • 3.抽象方法能不能适应static修饰?
  • 4.抽象方法能不能使用private修饰?
  • 总结

前言

上文在讲述接口的时候提到了抽象类,那么这篇文章就讲述一下抽象类的概念。

一、抽象类

1.抽象类的定义

        Java中抽象类是一种特殊的类,不能直接实例化,只能被用作其他类的父类被继承 。抽象类通过使用关键字“abstract”来定义。

public  abstract class  类名{
    
}

 抽象类是作为父类的。抽象类包含非抽象类所有的东西: 属性, 方法, 抽象方法。

        抽象类主要用于定义一些通用的属性和方法,它可以被子类继承并实现抽象方法。子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。

        抽象类可以包含普通的方法和变量,可以有构造方法,可以有静态方法和静态变量。抽象类可以拥有自己的成员变量和成员方法,也可以继承其他类或实现接口。这一点是与接口不一样的,接口只能有常量和抽象方法。

        

2.抽象类的使用

在抽象类中,定义方法的签名,子类继承实现方法体。

如下案例:

定义一个抽象类父类为Pet,宠物类,其中包括一个showInfo方法和eat抽象方法

public abstract class Pet {
    public void showInfo(){
        System.out.println("宠物自白:");
        System.out.print("我的名字叫"+this.name
                +",健康值是"+this.health+",和主人的亲密度是"+this.love);
    }
    public  abstract  void eat(String food);
}

再定义一个子类,名字叫Dog,Dog类继承Pet抽象类,重写showInfo方法,因为继承了Pet抽象类,所以要实现eat方法。

public class Dog extends Pet{
    @Override
    public void showInfo() {
        super.showInfo();
        System.out.println("我是一只"+this.type+"狗");
    }

    @Override
    public void eat(String food) {
        System.out.println("投喂"+food);
    }
}

二、抽象方法

1. 抽象方法的定义

抽象方法在抽象类父类中定义方法的签名,在子类中实现。

如下:eat就是就是一个抽象方法,Pet是抽象类,就是所谓的父类。

public abstract class Pet {
   
    public  abstract  void eat(String food);
}

 在Dog类中继承Pet类,Dog就是子类,子类必须实现父类定义的抽象方法。

public class Dog extends Pet{
    @Override
    public void eat(String food) {
        System.out.println("投喂"+food);
    }
}

 2.抽象方法的使用

抽象方法也使用关键字“abstract”来定义。

抽象方法没有方法体, 无法调用, 作用:只能被子类重写。

子类继承一个类, 这个类包含抽象方法:

  • 子类重写抽象方法

  • 如果子类不想重写, 把子类变成抽象类

如下:Penguin抽象类继承了Pet抽象类,但是Penguin可以不重写eat方法。

public abstract class Penguin extends Pet{
}

三、面试题

1.抽象类和抽象方法的关系

一个类包含抽象方法, 这个类必须变成抽象类。

一个类是抽象类, 这个类不是必须包含抽象方法。

抽象类,并不是一定包含抽象方法,但是包含抽象方法的一定是抽象类。

2.抽象类中可以有什么?

  • 属性

  • 非抽象方法

  • 抽象方法

  • 构造方法

3.抽象方法能不能适应static修饰?

抽象方法不能使用static修饰。抽象方法必须被子类实现,而static方法是属于类而不是实例的,无法在子类中进行重写或实现。因此,抽象方法和static修饰符是互斥的,不能同时使用。

4.抽象方法能不能使用private修饰?

抽象方法不能使用private修饰符。抽象方法必须被子类实现或者覆写,在父类中声明为抽象的方法是为了让子类必须实现该方法。私有方法是不能被子类访问或覆写的,因此不允许使用private修饰抽象方法。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了抽象类和抽象方法的内容,更多的需要自己在代码中实践。

你可能感兴趣的:(笔记(杂),Java后端,java,开发语言)