前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >java的类和对象(二)

java的类和对象(二)

原创
作者头像
堕落飞鸟
发布2023-04-02 10:03:47
发布2023-04-02 10:03:47
37600
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

静态变量和方法

静态变量和静态方法是属于类的,而不是属于对象的。静态变量在类加载时就已经存在,无需创建对象即可使用;静态方法可以直接通过类名调用,无需创建对象。

在Java中,我们可以使用static关键字来定义静态变量和静态方法。静态变量和静态方法的定义格式如下:

代码语言:javascript
代码运行次数:0
复制
访问修饰符 static 数据类型 变量名 = 初始值;
访问修饰符 static 返回类型 方法名(参数列表) {
    // 方法体
}

其中,访问修饰符用来限定静态变量和静态方法的访问范围。

静态变量的值可以被所有该类的对象共享,静态方法也只能访问静态变量和静态方法,不能访问非静态变量和非静态方法。

举个例子,我们定义一个名为Calculator的类,其中包含一个静态变量PI和一个静态方法add,分别用于计算圆周率和两个数的和:

代码语言:javascript
代码运行次数:0
复制
javaCopy codeclass Calculator {
    public static final double PI = 3.1415926; // 定义静态变量PI
    public static int add(int a, int b) { // 定义静态方法add
        return a + b;
    }
}

public class CalculatorDemo {
    public static void main(String[] args) {
        System.out.println("PI = " + Calculator.PI); // 直接访问静态变量
        System.out.println("1 + 2 = " + Calculator.add(1, 2)); // 直接调用静态方法
    }
}

继承

继承是面向对象编程中非常重要的概念之一,它可以使代码重用更加方便,同时也可以提高代码的可扩展性和可维护性。

在Java中,继承是通过extends关键字来实现的。子类可以继承父类的成员变量和成员方法,从而避免重复编写代码。子类还可以通过重写(覆盖)父类的方法来实现对方法的自定义行为。

在Java中,一个类只能直接继承一个父类(单继承),但是可以通过实现接口的方式来实现多继承的效果。

我们可以定义一个名为Animal的父类,其中包含一个名为name的成员变量和一个名为move的成员方法:

代码语言:javascript
代码运行次数:0
复制
class Animal {
    protected String name;

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

    public void move() {
        System.out.println(name + "正在移动");
    }
}

然后我们可以通过继承Animal类来定义子类。例如,我们可以定义一个名为Cat的子类,其中继承了Animal类的成员变量和成员方法,并且添加了一个新的成员方法catchMouse:

代码语言:javascript
代码运行次数:0
复制
class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    public void catchMouse() {
        System.out.println(name + "正在抓老鼠");
    }
}

在子类中,我们可以通过super关键字来调用父类的构造函数和成员方法。在上面的例子中,我们在Cat类的构造函数中调用了父类的构造函数,以初始化name成员变量。在Cat类中,我们重写了父类的move方法,并且添加了一个新的成员方法catchMouse。

现在我们可以创建Cat对象并调用它的成员方法:

代码语言:javascript
代码运行次数:0
复制
public class AnimalDemo {
    public static void main(String[] args) {
        Animal animal = new Animal("动物");
        animal.move();

        Cat cat = new Cat("猫");
        cat.move();
        cat.catchMouse();
    }
}

在上面的代码中,我们首先创建了一个Animal对象,并调用它的move方法。然后我们创建了一个Cat对象,它继承了Animal类的成员变量和成员方法,并添加了一个新的成员方法catchMouse。最后,我们调用了Cat对象的move方法和catchMouse方法。

输出结果为:

代码语言:javascript
代码运行次数:0
复制
动物正在移动
猫正在移动
猫正在抓老鼠

通过继承,我们可以实现代码的复用和扩展,使代码更加简洁和易于维护。同时,继承也是Java中面向对象编程的核心概念之一。

封装

在面向对象编程中,封装是指将数据和行为组合在一个单元中,并对外部对象隐藏数据实现细节。封装可以使对象的实现细节对外部对象不可见,从而提高程序的安全性和可维护性。Java中实现封装的方式是通过访问修饰符来控制对象成员的访问权限。

Java中的访问修饰符有四种:public、protected、default(即缺省)、private。它们分别表示不同的访问权限。

  • public:公共的,可以被任意对象访问。
  • protected:受保护的,只能被子类和同一个包中的对象访问。
  • default:默认的,只能被同一个包中的对象访问。
  • private:私有的,只能被本类中的对象访问。

下面的示例代码演示了如何使用封装实现类的数据和行为的组合:

代码语言:javascript
代码运行次数:0
复制
public class Student {
    private String name; // 学生姓名
    private int age; // 学生年龄

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        if (age > 0 && age < 120) { // 对年龄进行范围限制
            this.age = age;
        }
    }

    public int getAge() {
        return age;
    }
}

在上面的代码中,我们创建了一个名为Student的类,该类包含两个私有成员变量:name和age。我们使用public的setter和getter方法来访问这些私有成员变量,从而实现了数据和行为的组合和封装。在setAge方法中,我们使用条件语句对年龄进行了限制,确保年龄在0到120之间。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 静态变量和方法
  • 继承
    • 封装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档