Java普通类和抽象类有哪些区别?

目录

一、Java普通类

二、Java抽象类

三、Java普通类和抽象类有哪些区别?


 


一、Java普通类

Java的普通类是指非抽象类、非枚举类、非接口类,即最为普遍的一种类。通常情况下,我们在Java程序中定义的类都是普通类。

普通类可以包含多个成员变量和方法,并且可以通过关键字new来创建类的对象实例。我们可以在类的内部或外部访问和调用成员变量和方法,也可以继承其他类或者实现接口。

与抽象类和接口不同,普通类可以有自己的具体实现,不需要强制子类去实现抽象方法。因此,在设计程序时,我们可以根据实际情况来选择使用普通类、抽象类或接口。

总之,Java的普通类是最为常见的一种类,它可以拥有自己的属性和方法,并且可以被其他类继承和使用。

 

以下是一个简单的Java普通类样例,它包含了一些成员变量和方法:

public class Person {
    // 定义成员变量
    private String name;
    private int age;
    
    // 定义构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // 定义成员方法
    public void sayHello() {
        System.out.println("Hello, my name is " + name + " and I'm " + age + " years old.");
    }
    
    // 定义Getter和Setter方法
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
}

这个类名为Person,它包含两个私有成员变量nameage,分别表示人的姓名和年龄。这个类还定义了一个构造方法,用来对成员变量进行初始化。同时,该类还定义了一个成员方法sayHello(),用来输出自我介绍。

在这个类中,还定义了4个Getter和Setter方法,用来获取和设置成员变量的值。这些方法可以帮助我们封装类的内部实现,保证了程序的安全性和灵活性。

总之,这个类是一个简单的Java普通类样例,它包含了成员变量、构造方法、成员方法和Getter/Setter方法等。这些特性使得Java类具有了良好的封装性、可扩展性和可维护性。


二、Java抽象类

Java的抽象类是一种不能被实例化的类,它需要子类去继承并实现其中的抽象方法。在Java中,我们可以使用关键字abstract来定义一个抽象类,抽象类可以包含抽象方法、非抽象方法和成员变量等。

抽象类与普通类的区别在于,抽象类中至少包含一个或多个抽象方法,并且抽象方法没有具体的实现。因为抽象类不能直接被实例化,所以我们必须通过继承抽象类来实现其抽象方法,并且在子类中重写抽象方法并给出具体实现。

抽象类的主要作用是提供一组规范,规定了子类必须去实现的一些方法和属性等,同时也保证了程序的可扩展性和可维护性。抽象类还可以作为接口和具体类之间的中间件,帮助我们实现代码的复用和封装。

总之,Java的抽象类是一种非常重要的特性,它允许我们定义一组规范,规定了子类必须去实现的一些方法和属性等,并且保证了程序的可扩展性和可维护性。

 

以下是一个Java抽象类的样例:

public abstract class Animal {
    protected String name;
    protected int age;

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

    public abstract void sound();

    public void introduce() {
        System.out.println("My name is " + name + ", I am " + age + " years old.");
    }
}

这个示例中,我们定义了一个抽象类Animal,其中包含了两个成员变量nameage以及两个方法sound()introduce()sound()方法被声明为抽象方法,它没有具体的实现,而introduce()方法则有具体的实现,可以被子类继承并重写。

由于Animal是一个抽象类,所以我们无法直接创建它的实例。如果想要使用Animal,需要通过继承它并实现sound()方法来创建子类,并在子类中实现具体功能。

例如,下面是一个继承Animal类的子类Dog:

public class Dog extends Animal {
    public Dog(String name, int age) {
        super(name, age); // 调用父类构造函数
    }

    @Override
    public void sound() {
        System.out.println("Wang Wang");
    }
}

Dog类继承了Animal类,并实现了sound()方法,给出了具体的实现。我们可以在程序中创建Dog对象,并调用其introduce()sound()方法:

Dog dog = new Dog("Tom", 3);
dog.introduce(); // 输出:"My name is Tom, I am 3 years old."
dog.sound(); // 输出:"Wang Wang"

这个例子展示了抽象类的基本用法,它可以定义一组规范并要求子类去实现其中的抽象方法。


三、Java普通类和抽象类有哪些区别?

Java普通类和抽象类的主要区别如下:

  1. 实例化:普通类可以被实例化,而抽象类不能被直接实例化。

  2. 抽象方法:普通类中不会包含抽象方法(只有具体实现),而抽象类中必须至少包含一个抽象方法。抽象方法是没有具体实现的方法,它只有方法的声明,而没有方法体。

  3. 继承:普通类可以被其他普通类继承,也可以被抽象类继承,而抽象类只能被其他类继承。

  4. 特征:普通类用于描述一些具体对象的行为和属性,而抽象类则更多地用于描述一些概念上的特征和规范。抽象类通常是对一组相关类进行抽象,提取出它们共有的特征和行为,以便于让这些类更加易于维护和扩展。

  5. 方法实现:普通类中的所有方法都必须有具体的实现,而抽象类中可以包含普通方法和抽象方法。普通方法在抽象类中的实现方式与普通类相同,而抽象方法则不需要实现,需要由子类去实现。

总之,普通类和抽象类都是Java中的类,它们之间的区别主要在实例化、抽象方法、继承、特征和方法实现等方面。我们需要根据具体情况选择使用哪种类型的类来实现程序的功能。

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡晗靓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值