网站首页 > java教程 正文
Java 语言通过面向对象编程(OOP)模型来组织和管理代码。面向对象编程强调将数据和操作数据的代码组织在一起,通过对象的方式进行建模。
面向对象编程优势
- 数据封装:指对系统的其余部分隐藏数据,只允许访问其中的部分数据。
- 简易性:构建大型系统是一个复杂的任务,有许多问题需要解决。 若能够将复杂的事物分解成更小的问题,分解成对象,这意味着你可以简化整个任务。
- 易于修改:当你依赖于对象并使用这些对象对系统进行建模时,可更轻松地跟踪系统的哪些部分需要修改。
- 可维护性: 使用对象可更轻松地找到需要维护的特定代码区域。
- 可重用性:对象的定义可在你的系统的许多部分中多次使用,也可能在其他系统中多次使用。
Java 的面向对象特性包括以下几个主要方面:
封装(Encapsulation)
封装是将对象的状态(属性)和行为(方法)包装在一个类中,并通过公开的接口(通常是公共方法)与外界交互。封装的主要目的是保护对象的状态,使得对象内部的实现细节对外部代码隐藏,避免外部直接访问和修改对象的属性。
- 实现方式:通过访问修饰符(如 private, public, protected, default)来控制属性和方法的可见性,通常将属性设置为 private,并通过 public 方法提供访问接口(getter/setter)。
class Person {
private String name; // 私有属性
public String getName() { // 公共方法,获取名字
return name;
}
public void setName(String name) { // 公共方法,设置名字
this.name = name;
}
}
继承(Inheritance)
继承允许一个类继承另一个类的属性和方法,从而实现代码的重用。子类可以继承父类的成员(字段和方法),并且可以扩展或重写父类的方法。
- 实现方式:使用 extends 关键字表示继承关系,子类可以继承父类的公有和保护成员,且可以覆盖父类的方法。
class Animal {
void speak() {
System.out.println("Animal speaks");
}
}
class Dog extends Animal { // Dog 继承 Animal
@Override
void speak() { // 重写 speak 方法
System.out.println("Dog barks");
}
}
多态(Polymorphism)
多态是指同一方法在不同对象上有不同的表现形式。通过多态,一个父类引用可以指向子类对象,并且调用方法时会表现出子类的行为。
- 实现方式:方法重写(override)和方法重载(overload)是实现多态的两种方式。方法重写发生在继承中,子类提供一个实现来覆盖父类的方法;方法重载则是在同一个类中根据参数不同定义多个方法。
class Animal {
void speak() {
System.out.println("Animal speaks");
}
}
class Dog extends Animal {
@Override
void speak() {
System.out.println("Dog barks");
}
}
public class TestPolymorphism {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog(); // 父类引用指向子类对象
myAnimal.speak(); // 输出 "Animal speaks"
myDog.speak(); // 输出 "Dog barks"
}
}
抽象(Abstraction)
抽象是指隐藏具体实现,关注于类的接口和功能,而不是实现的细节。抽象的目的是简化复杂的系统,通过定义抽象类或接口来声明一组方法,而不提供方法的具体实现,具体实现由子类完成。
- 实现方式:使用 abstract 关键字定义抽象类和抽象方法。抽象类不能被实例化,必须由子类继承并实现抽象方法。
abstract class Animal {
abstract void speak(); // 抽象方法,没有实现
}
class Dog extends Animal {
@Override
void speak() {
System.out.println("Dog barks");
}
}
猜你喜欢
- 2024-12-14 JAVA基础小知识(干货哟)
- 2024-12-14 Java 21新特性-虚拟线程
- 2024-12-14 Java8新特性之 lambda 表达式
- 2024-12-14 java基础之java8新特性:Lambda表达式
- 2024-12-14 Java 9特性抢鲜看
- 2024-12-14 渣翻:从 Java 8 到 Java 18 的新语言特性
- 2024-12-14 Java17 vs Java8: 新旧对决,这些Java 17新特性你不容错过
- 2024-12-14 Spring Boot 2.6新特性:使用Java 17的Record作为配置属性
- 2024-12-14 Java 18 新特性:简单Web服务器 jwebserver
- 2024-12-14 《我的世界》JAVA版特性开关!收纳袋、村民交易平衡、1.21更新!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)