JAVA中的抽象类

今天药忘吃喽~ 2024-03-22 13:30 172阅读 0赞

一、介绍

Java中提供了两种类:具体类和抽象类。

1、abstract意思为“抽象的”,用abstract关键字来修饰一个类时,这个类就叫做抽象类。

语法:访问修饰符 abstract 类名{

}

  1. public abstract class A{
  2. }

2、用abstract关键字来修饰一个方法时,这个方法是抽象方法。

语法:访问修饰符 abstract 返回值类型 方法名(参数类表);

  1. public abstract void hello();

注意:抽象方法无方法体,只声明。

二、特点

1、抽象类不能实例化。

  1. public class C {
  2. public static void main(String[] args) {
  3. System.out.println("hello!");
  4. // D d=new D() ;----->报错
  5. }
  6. }
  7. abstract class D{
  8. }

2、一个类中含有抽象方法则这个类一定为抽象类。

3、抽象类中可以不含有抽象方法。

4、abstract只能修饰类和方法,不能修饰属性和其他的。

5、抽象类可以有任意成员(抽象类的本质还是类),比如:非抽象方法、构造器、静态属性、静态方法等。

  1. public abstract class D{
  2. public int a =10;
  3. public String name="jack";
  4. public D(){
  5. System.out.println("抽象类D的无参构造方法!");
  6. }
  7. public void hi(){
  8. System.out.println("Hello World!");
  9. }
  10. public static void ok(){
  11. System.out.println("ok!");
  12. }
  13. public abstract void hello();
  14. }

6、抽象方法不能有主体,即不能实现。

7、如果一个类继承了抽象类,则它必须实现抽象类中所有的抽象方法,除非它自己也声明为abstract类

  1. public abstract class E{
  2. public abstract void walk();
  3. }
  4. abstract class F extends E{
  5. }
  6. class G extends E{
  7. @Override
  8. public void walk() {
  9. }
  10. }

8、抽象方法不能使用private、final和static来修饰,因为这些关键字都是与重写相违背的。

三、抽象类的作用

当父类知道子类要完成某种行为,但每个子类的实现方式又不一样时,于是该父类就把行为定义为抽象方法的形式,具体实现交给子类去完成,此时这个类就可以声明为抽象类。

例如:

先声明一个Cat类,Cat需要有睡觉这一方法

  1. public class Cat{
  2. public void sleep(){
  3. System.out.println("我正在睡觉!");
  4. }
  5. }

再声明一个Dog类,Dog也需要睡觉这一方法

  1. public class Dog{
  2. public void sleep(){
  3. System.out.println("我正在睡觉!");
  4. }
  5. }

这里的Cat与Dog都有共同的行为,若存在一个父类Animal类同样有睡觉的方法,且父类与子类“睡觉”这一方法完全相同,则子类可以完全继承父类这一方法。

  1. public class Aniaml{
  2. public void sleep(){
  3. System.out.println("我正在睡觉!");
  4. }
  5. }
  6. public class Cat extends Animal{
  7. @Override
  8. public void sleep() {
  9. super.sleep();
  10. }
  11. }
  12. public class Dog extends Animal{
  13. @Override
  14. public void sleep() {
  15. super.sleep();
  16. }
  17. }

若在此时给Dog和Cat添加一个eat()的行为,不同的是,Dog吃的是骨头,Cat吃的是鱼,此时就可以将Dog和Cat作为子类,抽象出eat()这个行为作为抽象方法放在父类中

  1. public abstract class Aniaml{
  2. public void sleep(){
  3. System.out.println("我正在睡觉!");
  4. }
  5. public abstract void eat();
  6. }

子类Cat重写eat()方法

  1. public class Cat extends Animal{
  2. @Override
  3. public void sleep() {
  4. super.sleep();
  5. }
  6. @Override
  7. public void eat() {
  8. System.out.println("小猫吃鱼!");
  9. }
  10. }

子类Dog重写eat方法

  1. public class Dog extends Animal{
  2. @Override
  3. public void sleep() {
  4. super.sleep();
  5. }
  6. @Override
  7. public void eat() {
  8. System.out.println("小狗吃骨头!");
  9. }
  10. }

创建一个测试类:由于父类Animal是抽象类,无法实例化对象,只能通过对子类的实例化对象来调用方法。

  1. public class AbstractTest {
  2. public static void main(String[] args) {
  3. System.out.println("狗的行为--------------------");
  4. Dog dog= new Dog();
  5. dog.sleep();
  6. dog.eat();
  7. System.out.println("猫的行为--------------------");
  8. Cat cat= new Cat();
  9. cat.sleep();
  10. cat.eat();
  11. }
  12. }

412ed6acc9f146b38d39f9129f8bdfc6.png

发表评论

表情:
评论列表 (有 0 条评论,172人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA抽象

    一、介绍 Java中提供了两种类:具体类和抽象类。 1、abstract意思为“抽象的”,用abstract关键字来修饰一个类时,这个类就叫做抽象类。 语法:访问修饰

    相关 Java抽象

    一、抽象类定义 Java语言提供了两种类:具体类和抽象类 在Java中,abstract是抽象的意思,可以修饰类,成员方法 abstract修饰类,就是抽象类,abs

    相关 Java抽象方法抽象

    1、 普通方法和抽象方法的区别 (1)在Java中,当一个类的方法被abstract关键字修饰时,该方法称为抽象方法。 (2)抽象方法所在的类必须定义为抽象类。 (3

    相关 java 抽象

    在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象。从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对

    相关 java抽象抽象方法

    使用关键字abstract定义的类叫做抽象类,在抽象类中可以包含抽象方法也可以不包含抽象方法,这意味着你在抽象类里边可以有具体的方法(有实现体)也可以有抽象方法(没有实现,没有

    相关 Java抽象

    抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的

    相关 java抽象

    java中的抽象类 1.什么是抽象类? 类--通过class关键字创建的java元素。描述具有公共性质的一组事物的自定义复合数据类型。 /\\ \ 普通的java