面向東西編程(OOP)是Java編程言語的核心特點之一,它供給了一種構造代碼的富強方式,容許開辟者以更切近現實世界的方法構建順序。Java的OOP基於三大年夜特點:封裝、持續跟多態。以下是對這些特點的深刻剖析,以及一些實戰利用實例。
1. 封裝(Encapsulation)
封裝是指將東西的屬性(數據)跟行動(操縱數據的方法)綁縛在一起,構成類。封裝的目標是暗藏外部實現細節,僅供給大年夜眾介面與外界交互。
1.1 類定義
在Java中,利用class
關鍵字定義一個類。
public class BankAccount {
private double balance; // 私有屬性
public BankAccount(double initialBalance) {
balance = initialBalance;
}
public double getBalance() {
return balance;
}
public void deposit(double amount) {
balance += amount;
}
}
1.2 拜訪把持
Java利用拜訪潤飾符來把持類成員的可見性,包含public
、private
、protected
跟default
。
public
:可能在任那邊所拜訪。private
:只能在類外部拜訪。protected
:可能在同一個包內以及子類中拜訪。default
(無潤飾符):只能在同一個包內拜訪。
2. 持續(Inheritance)
持續容許一個類持續另一個類的屬性跟方法。這有助於代碼重用跟創建類檔次構造。
2.1 類的持續
public class SavingsAccount extends BankAccount {
private double interestRate;
public SavingsAccount(double initialBalance, double interestRate) {
super(initialBalance); // 挪用父類的構造器
this.interestRate = interestRate;
}
public void applyInterest() {
double interest = getBalance() * interestRate / 100;
deposit(interest); // 持續父類的deposit方法
}
}
2.2 多態(Polymorphism)
多態容許利用指向父類東西的引用挪用子類的方法。
BankAccount account = new SavingsAccount(1000, 2.5);
account.applyInterest(); // 挪用SavingsAccount類的applyInterest方法
3. 實戰利用
以下是一個簡單的實例,展示怎樣利用Java的OOP特點來計劃一個簡單的圖書管理體系。
public class Book {
private String title;
private String author;
private int year;
public Book(String title, String author, int year) {
this.title = title;
this.author = author;
this.year = year;
}
public String getTitle() {
return title;
}
public String getAuthor() {
return author;
}
public int getYear() {
return year;
}
}
public class Library {
private List<Book> books;
public Library() {
books = new ArrayList<>();
}
public void addBook(Book book) {
books.add(book);
}
public void displayBooks() {
for (Book book : books) {
System.out.println(book.getTitle() + " by " + book.getAuthor() + " (" + book.getYear() + ")");
}
}
}
public class Main {
public static void main(String[] args) {
Library library = new Library();
library.addBook(new Book("Effective Java", "Joshua Bloch", 2008));
library.addBook(new Book("Java Concurrency in Practice", "Brian Goetz", 2006));
library.displayBooks();
}
}
在這個例子中,Book
類表示一本書,Library
類管理一個書庫。經由過程封裝跟持續,我們可能輕鬆擴大年夜Book
類,比方創建TextBook
類持續自Book
類,並增加特定的屬性跟方法。
經由過程上述實例剖析,我們可能看到Java面向東西編程的富強之處。它不只有助於代碼的重用,還供給了清楚跟模塊化的代碼構造,使順序更輕易保護跟擴大年夜。