Java面向对象编程详解

发布时间:2025-01-15 | 作者:Admin | 分类:Java进阶
面向对象 封装 继承 多态
← 返回首页

面向对象编程概念

面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它将现实世界中的事物抽象为对象,通过对象之间的交互来解决问题。Java是一门完全面向对象的编程语言。

面向对象三大特性

封装(Encapsulation)

封装是将数据和操作数据的方法绑定在一起,形成一个独立的单元(即类),并尽可能隐藏对象的内部实现细节。

public class Person {
    // 使用private关键字隐藏属性
    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) {
        if(age > 0 && age < 150) {
            this.age = age;
        }
    }
}
            

继承(Inheritance)

继承允许一个类获取另一个类的属性和方法,实现代码的重用。被继承的类称为父类(超类),继承父类的类称为子类。

// 父类
public class Animal {
    protected String name;

    public void eat() {
        System.out.println(name + "正在吃东西");
    }
}

// 子类继承父类
public class Dog extends Animal {
    public void bark() {
        System.out.println(name + "正在汪汪叫");
    }
}

// 使用示例
Dog dog = new Dog();
dog.name = "旺财";
dog.eat();  // 继承自父类的方法
dog.bark(); // 子类自己的方法
            

多态(Polymorphism)

多态是指同一个接口可以有多种不同的实现方式。在Java中,多态主要通过方法重写和方法重载来实现。

// 父类
public class Shape {
    public void draw() {
        System.out.println("绘制图形");
    }
}

// 子类1
public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

// 子类2
public class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}

// 多态的使用
Shape shape1 = new Circle();    // 父类引用指向子类对象
Shape shape2 = new Rectangle(); // 父类引用指向子类对象

shape1.draw(); // 输出:绘制圆形
shape2.draw(); // 输出:绘制矩形
            

抽象类与接口

抽象类

抽象类不能被实例化,通常包含抽象方法(没有具体实现的方法)和具体方法。

public abstract class Animal {
    protected String name;

    // 抽象方法
    public abstract void makeSound();

    // 具体方法
    public void sleep() {
        System.out.println(name + "正在睡觉");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵");
    }
}
            

接口

接口是一种完全抽象的类,只包含常量和抽象方法。一个类可以实现多个接口。

public interface Flyable {
    void fly();
}

public interface Swimmable {
    void swim();
}

// 实现多个接口
public class Duck implements Flyable, Swimmable {
    @Override
    public void fly() {
        System.out.println("鸭子在飞翔");
    }

    @Override
    public void swim() {
        System.out.println("鸭子在游泳");
    }
}
            
← 返回首页