面向对象编程概念
面向对象编程(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("鸭子在游泳"); } }