Java:抽象类和接口(1)

一 抽象类

1.什么是抽象类

在 Java SE 中,抽象类是一种用于为其他类提供通用行为的类。它允许你定义一组方法和字段,而具体的实现留给子类来完成。抽象类不能被实例化,必须通过继承它的子类来实现其抽象方法并进行实例化。

java 复制代码
public abstract class Shape {

    public abstract void draw();

}
public class Cycle extends Shape{
    public void draw(){
        System.out.println("画一个圆。。。。。。。");
    }
}
public class Flower extends Shape{
    public void draw(){
        System.out.println("画一朵花.。。。。。。。");
    }
}
public class Test {
    public static void main(String[] args) {
        Cycle cycle=new Cycle();
        Flower flower =new Flower();
        Shape[] shapes={cycle,flower,cycle,cycle,flower};
        for (Shape s:shapes) {
            s.draw();
        }

       // Shape shape=new Shape();

        //Shape shape=new Cycle();
    }

}

2.抽象类的定义

使用 abstract 关键字定义一个类为抽象类。抽象类可以包含抽象方法(没有方法体的方法)和非抽象方法(普通方法),但它们不能直接被实例化。

java 复制代码
public abstract class Shape {
java 复制代码
abstract class Shape {
    // 抽象方法(没有方法体)
    public abstract void draw();

    // 具体方法(有实现)
    public void move() {
        System.out.println("Moving the shape");
    }
}

3.抽象方法

抽象方法只有方法的签名,没有具体的实现。它们在抽象类中声明,但必须由子类提供实现。

java 复制代码
父类的抽象方法
public abstract class Shape {

    public abstract void draw();

}
在子类中具体实现
public class Cycle extends Shape{
    public void draw(){
        System.out.println("画一个圆。。。。。。。");
    }
}
public class Flower extends Shape{
    public void draw(){
        System.out.println("画一朵花.。。。。。。。");
    }
}
抽象方法的特点
  • 抽象方法必须在抽象类中声明。
  • 子类必须实现所有的抽象方法,除非子类本身也是抽象类。
  • 抽象方法不能有方法体(没有大括号和具体的实现代码)。

注:如果子类也是抽象方法,则在子类的子类中实现,欠下的总是要还的。

java 复制代码
public abstract class Shape {

    public abstract void draw();

}


abstract class A extends Shape{
    public abstract void drink();
}

 class B extends A{
    public void draw(){
        System.out.println("画画");
    }
    public void drink(){
        System.out.println("喝水");
    }
}

4. 抽象类的特点

  • 不能实例化 :抽象类不能直接创建对象。例如,Shape shape = new Shape(); 是不合法的,因为抽象类无法实例化。
  • 可以包含具体方法:抽象类不仅可以包含抽象方法,还可以包含具体方法,即有实现的方法。
  • 可以包含字段:抽象类可以像普通类一样包含成员变量(字段)。
  • 可以有构造器:尽管抽象类不能被实例化,但它可以有构造器,供子类调用。

注:抽象类可以有抽象方法和普通方法,但是普通类只能有普通方法不能有抽象方法。

总结:

  1. 如果一个类中有抽象方法,那么这个类必定是抽象类
  2. 抽象类的抽象方法可以没有具体实现,在子类中实现
  3. 抽象类的出现就是为了被继承的
  4. 抽象类不能被实例化,它的目的是为其他类提供基础和模板。
  5. 抽象类可以包含字段、构造器、具体方法等元素,使得它比接口更灵活。

希望能对大家有所帮助!!!!!

相关推荐
Chase_Mos3 小时前
Spring 必会之微服务篇(1)
java·spring·微服务
码上淘金4 小时前
【Python】Python常用控制结构详解:条件判断、遍历与循环控制
开发语言·python
Brilliant Nemo4 小时前
四、SpringMVC实战:构建高效表述层框架
开发语言·python
格林威6 小时前
Baumer工业相机堡盟工业相机的工业视觉中为什么偏爱“黑白相机”
开发语言·c++·人工智能·数码相机·计算机视觉
小林学习编程6 小时前
SpringBoot校园失物招领信息平台
java·spring boot·后端
撸码到无法自拔6 小时前
docker常见命令
java·spring cloud·docker·容器·eureka
橙子199110166 小时前
在 Kotlin 中什么是委托属性,简要说说其使用场景和原理
android·开发语言·kotlin
androidwork6 小时前
Kotlin Android LeakCanary内存泄漏检测实战
android·开发语言·kotlin
heart000_16 小时前
IDEA 插件推荐:提升编程效率
java·ide·intellij-idea
学地理的小胖砸7 小时前
【Python 基础语法】
开发语言·python