Java 面向对象—抽象类与封装

Java抽象类

Java 抽象类是一种特殊的类,它主要用于定义接口和方法,而不是具体的实现。抽象类使用abstract关键字来定义。当一个类被声明为抽象类时,它只能被用作其他类的基类,而不能被实例化。

以下是抽象类的一些特点:

1. 抽象类可以使用abstract关键字来定义,并且可以在抽象类中定义抽象方法。抽象方法没有方法体,它只包含方法的声明。


public abstract class AbstractExample {
    public abstract void doSomething();
}

2. 抽象类可以包含具体方法和成员变量。抽象类通常会包含一些通用的方法,这些方法可以在子类中被重写。

public abstract class AbstractExample {
    public abstract void doSomething();

    public void commonMethod() {
        // 通用方法
    }
}

3. 抽象类不能被实例化,但它可以包含抽象方法和具体方法。当一个类继承自抽象类时,它必须实现抽象类中的所有抽象方法,除非子类本身也是抽象类。

public abstract class AbstractExample {
    public abstract void doSomething();
}

public class ConcreteExample extends AbstractExample {
    
    public void doSomething() {
        // 具体实现
    }
}

4. 抽象类主要用于定义接口,它允许我们重用代码,并确保子类具有通用的行为。通过使用抽象类,我们可以确保子类具有某些行为,同时允许子类实现特定的行为。

总之,Java 抽象类是一种定义接口和方法的特殊类,它主要用于定义抽象方法,并在子类中实现这些方法。抽象类本身不能被实例化,但它可以用作其他类的基类,以确保子类具有通用的行为。

下面我们看一个例子

public abstract class Animal {
    public abstract String makeSound();
}

public class Dog extends Animal {
   
    public String makeSound() {
        return "Woof!";
    }
}

public class Cat extends Animal {
    
    public String makeSound() {
        return "Meow!";
    }
}

public class AbstractExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        System.out.println(dog.makeSound()); // 输出: Woof!

        Cat cat = new Cat();
        System.out.println(cat.makeSound()); // 输出: Meow!
    }
}

以下是一个Java抽象类的例子。在这个例子中,我们定义了一个抽象类`Animal`,其中包括一个抽象方法`makeSound`。接下来,我们定义了两个具体类`Dog`和`Cat`,它们分别继承自`Animal`并实现`makeSound`方法。

在这个例子中,我们定义了一个抽象类`Animal`,其中包括一个抽象方法`makeSound`。`Dog`和`Cat`类都继承自`Animal`,并实现`makeSound`方法,分别返回"Woof!"和"Meow!"。在`main`方法中,我们创建了`Dog`和`Cat`的对象,并调用了`makeSound`方法,输出了相应的声音。

Java封装

Java中的封装是指将一个类的属性和方法隐藏起来,只对外暴露必要的接口,以保证类的安全性和灵活性。这样,外界就不能直接访问类的内部状态,而需要通过特定的方法来进行访问和操作。

Java中的封装主要通过访问修饰符来实现。Java中的访问修饰符包括private、protected、public和默认访问级别,根据其修饰的作用域不同,可以实现不同程度的封装。

  • private:被该关键字修饰的属性和方法只能在当前类中被访问,其他类无法访问。
  • protected:被该关键字修饰的属性和方法只允许在当前类、当前包及其子类中被访问。
  • public:被该关键字修饰的属性和方法可以被任何类访问。
  • 默认访问级别:在Java中,如果一个类、属性或方法没有被任何访问修饰符修饰,则其默认访问级别为包级别。

通过合理的使用访问修饰符,可以实现对类的属性和方法的封装,从而提高程序的安全性和可维护性。

在 Java 中,封装通常通过以下几种方式来实现:

访问控制修饰符:Java 提供访问控制修饰符如`public`、`protected`、`default`和`private`来控制成员变量和方法的访问权限。例如,将类成员变量声明为`private`,只能通过该类提供的公共方法来访问和修改。
例:

public class Person {
    private String name;
    private int age;

    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;
    }
}

后续还会补充Java封装性的应用。

若有不足,请大佬指教!!

你可能感兴趣的:(java,开发语言)