首页 > 编程语言 >JavaOOP04——抽象

JavaOOP04——抽象

时间:2024-11-10 14:16:57浏览次数:3  
标签:name void JavaOOP04 final 关键字 static 抽象 public

目录

一、抽象类与抽象方法

二、final关键字 

三、static关键字 

四、单例模式


一、抽象类与抽象方法

1. 概念介绍

抽象类是一种特殊的类,它不能被实例化,即不能通过new关键字直接创建其对象。抽象类存在的意义是为了被其他类继承,并且抽象类可以包含抽象方法和其他具体实现的方法。

抽象方法是指没有具体实现的方法,即只有方法签名而没有方法体。抽象方法需要由继承了抽象类的子类来具体实现。

2. 使用场景

抽象类通常用来定义一组相关的类的共同特征,而这些特征可能在不同的子类中有不同的实现方式。抽象方法则是在父类中声明需要实现的方法,而具体的实现留给子类去完成。

3. 编码实践

假设我们正在开发一个动物管理系统,其中不同类型的动物有不同的叫声。我们可以创建一个抽象类Animal,其中包含一个抽象方法speak(),以及一些共有的属性和方法。

示例代码

// 定义一个抽象类 Animal
abstract class Animal {
    protected String name;

    // 构造器
    public Animal(String name) {
        this.name = name;
    }

    // 共有方法
    public void eat() {
        System.out.println(name + " is eating.");
    }

    // 抽象方法,由子类实现
    public abstract void speak();
}

// Dog 类继承 Animal 并实现 speak 方法
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    @Override
    public void speak() {
        System.out.println(name + " says Woof!");
    }
}

// Cat 类继承 Animal 并实现 speak 方法
class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    @Override
    public void speak() {
        System.out.println(name + " says Meow!");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog("Buddy");
        Animal cat = new Cat("Whiskers");

        dog.speak(); // 输出: Buddy says Woof!
        cat.speak(); // 输出: Whiskers says Meow!

        dog.eat();   // 输出: Buddy is eating.
        cat.eat();   // 输出: Whiskers is eating.
    }
}

二、final关键字 

1. 概念介绍

final关键字用于标记类、方法或变量,表示该元素是最终的,即不可更改或重写。

  • final类:此类不能被继承。

  • final方法:此方法不能被子类覆盖。

  • final变量:此变量一旦被赋值,则其值不能被改变。

2. 使用场景

final关键字经常用于保护数据不被修改,或者确保方法的行为不被子类改变。

3. 编码实践

以下代码展示了如何使用final关键字定义一个不可继承的类,并且该类中的方法也不能被重写。

示例代码

// 使用 final 关键字定义不可继承的类
final class FinalClass {
    // 使用 final 关键字定义不可重写的常量
    private final int value = 10;

    // 使用 final 关键字定义不可重写的常量方法
    public final int getValue() {
        return value;
    }
}

public class Main {
    public static void main(String[] args) {
        FinalClass obj = new FinalClass();
        System.out.println(obj.getValue()); // 输出: 10
    }
}

三、static关键字 

1. 概念介绍

static关键字用于定义类的静态成员变量和静态方法。静态成员属于类本身,而不是类的实例。这意味着不需要创建类的实例就可以访问静态成员。

2. 使用场景

  • 当我们需要一个共享的数据成员时,可以使用static关键字。

  • 当方法的操作不依赖于对象的状态时,可以使用static关键字。

3. 编码实践

以下示例演示了如何使用static关键字定义静态变量和静态方法。

示例代码

public class StaticExample {
    // 静态变量,所有实例共享
    public static int count = 0;

    // 静态方法,可以直接通过类名调用
    public static void incrementCount() {
        count++;
    }

    // 实例方法
    public void printCount() {
        System.out.println("Current count is " + count);
    }
}

public class Main {
    public static void main(String[] args) {
        StaticExample.incrementCount(); // 增加计数器
        StaticExample.incrementCount(); // 再次增加计数器

        StaticExample example1 = new StaticExample();
        example1.printCount(); // 输出: Current count is 2

        StaticExample example2 = new StaticExample();
        example2.printCount(); // 输出: Current count is 2
    }
}

四、单例模式

1. 概念介绍

单例模式是一种创建型模式,它保证一个类仅有一个实例,并提供一个全局访问点。

2. 使用场景

单例模式常用于管理系统中的一些资源,如配置文件、日志记录等,确保这些资源在整个应用中只有一个实例,以避免多次创建导致的问题。

3. 编码实践

以下示例展示了如何使用懒汉式单例模式实现一个日志记录类。

示例代码

public class Logger {
    private static Logger instance;

    // 私有构造函数
    private Logger() {}

    // 提供一个全局访问点
    public static Logger getInstance() {
        if (instance == null) {
                if (instance == null) {
                    instance = new Logger();
                }
        }
        return instance;
    }

    public void log(String message) {
        System.out.println("Logging: " + message);
    }
}

public class Main {
    public static void main(String[] args) {
        Logger logger = Logger.getInstance();
        logger.log("This is a log message.");
    }
}

标签:name,void,JavaOOP04,final,关键字,static,抽象,public
From: https://blog.csdn.net/XYL6AAD8C/article/details/143660431

相关文章

  • 软件工程中的创建型设计模式:工厂方法模式与抽象工厂模式
    目录1.工厂方法模式(FactoryMethodPattern)1.1核心概念1.2应用场景1.3优点2.抽象工厂模式(AbstractFactoryPattern)2.1核心概念2.2应用场景2.3优点3.联系与区别4.拓展知识5.结语        在软件工程领域,我们经常探讨如何通过设计模式来提高代码......
  • 接口和抽象类详解
    抽象类特点:1.抽象类中可以有构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。抽象方法不能有方法体4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实......
  • Java - 27 抽象类 + 接口
    Java抽象类+接口抽象类当父类的某些方法需要声明,但又不确定如何实现时(父类方法不确定性问题),可以将其声明为抽象方法,这个类就是抽象类publicabstractclassAnimal{abstractpublicvoideat();//抽象方法没有方法体}一般来说,抽象类会被继承,由其子类具体实现细节......
  • 彻底搞懂接口和抽象类
    接口接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。publicinterfaceShape{voiddraw();//画图的方法,没有具体实现}可以看出里面只有孤孤单单的方法声明而已,......
  • 【Java SE语法】抽象类(abstract class)和接口(interface)有什么异同?
    目录1.抽象类与接口的基本概念1.1 抽象类1.2接口2.抽象类与接口的异同2.1相同点2.2不同点3.拓展知识:多态与设计模式3.1多态3.2设计模式4.结论        在软件工程中,设计模式和代码结构的选择对于构建可维护、可扩展的系统至关重要。抽象类(Abstrac......
  • C++:多态中的虚/纯虚函数,抽象类以及虚函数表
    我们在平时,旅游或者是坐高铁或火车的时候。对学生票,军人票,普通票这些概念多少都有些许耳闻。而我们上篇文章也介绍过了继承与多继承。如果这些票我们都分别的去写一个类,当然很冗余,这里我们便可以去使用继承,我们假设我们的票价是由一个票价函数控制的,如果子类与父类中有着同名的......
  • C++工厂模式全解析:从简单工厂到抽象工厂的进阶之路
    在软件设计中,工厂模式(FactoryPattern)是一类创建型设计模式,用于将对象的创建过程和使用过程解耦。这种设计模式在面向对象编程中非常常见,特别是在构建复杂系统时,工厂模式可以使代码更加灵活、模块化、易于扩展。工厂模式的主要类型包括:简单工厂模式(SimpleFactory)工厂方法模......
  • Scala的抽象类
    抽象类:是一个不能被实例化的类。      !不可以直接创建对象,而是通过子类创建对象。 关键字:abstract   语法:abstractclassA{}举例://定义抽象类:定义标准//抽象类是一个特殊的类,它至少包含一个抽象方法//抽象方法:没有方法体,只有def和方法名abstra......
  • Python 继承、多态、封装、抽象
    面向对象编程(OOP)是Python中的一种重要编程范式,它通过类和对象来组织代码。OOP的四个核心概念是继承(Inheritance)、多态(Polymorphism)、封装(Encapsulation)和数据抽象(DataAbstraction)。下面将详细介绍这四个概念。继承(Inheritance)继承是面向对象编程(OOP)的一个基本概念,它允......
  • Maxima抽象代数【1】
    文章目录等价关系等价关系定义Maxima计算机代数系统中,`declare`命令使用语法常用的属性类型示例1.声明整数属性2.声明偶数属性3.声明复数属性注意事项总结在Maxima中,`assume`命令使用语法常见用途和示例管理假设`assume`与`declare`的区别总结在Maxima中......