理解Java面向对象编程设计的完整攻略
1. 理解什么是面向对象编程设计
面向对象编程设计(Object-Oriented Programming,OOP)是一种软件开发范式,基于对象的概念进行编程。其重点在于数据和行为的封装,通过封装来降低耦合度。面向对象的语言中,一切皆为对象。通过对象的封装、继承、多态等特性,编写出高效、灵活、可维护的程序。
2. Java面向对象编程设计的三大特性
在Java中面向对象编程主要依靠以下三种特性:
2.1 封装(Encapsulation)
Java中封装是指,将数据和方法进行包装,并且对外暴露精简的接口。通过对变量和方法的访问控制,掌控了程序的变量与方法权限,可以有效的保护数据和代码。Java中通过关键字 private
/protected
/public
控制变量和方法的封装。
以下是一个简单的Java类,观察其封装特性。
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;
}
}
在这个类中,name和age被声明为私有变量,只提供了getter和setter方法,通过getter和setter方法操作变量的存取。
2.2 继承(Inheritance)
Java中的继承是指子类可以继承父类的成员变量、方法以及内部类。继承可以有效实现代码的重用,缩短开发时间。Java中的继承控制使用 extends
关键字。
以下是一个使用继承的Java类,观察其继承特性。
public class Student extends Person {
private String school;
public String getSchool(){
return school;
}
public void setSchool(String school){
this.school = school;
}
}
在这个类中,Student类继承了Person类。不需要重新定义get/set方法,可以直接使用父类中的相应方法。
2.3 多态(Polymorphism)
Java中多态是指,同一个方法在不同的对象中具有不同的行为。就是父类声明的引用变量可以使用子类的对象来进行调用。Java中多态分为两种体现形式:方法重载(Overload)和方法重写(Override)。
以下是一个使用多态的Java类,观察其多态特性。
public class Animal {
public void sound(){
System.out.println("This is an animal sound...");
}
}
public class Dog extends Animal {
public void sound(){
System.out.println("The dog barks...");
}
}
public class Cat extends Animal {
public void sound(){
System.out.println("The cat meows...");
}
}
public class Test {
public static void main(String[] args){
Animal ani1 = new Dog();
Animal ani2 = new Cat();
ani1.sound();
ani2.sound();
}
}
在这个类中,Animal是父类,Dog和Cat都是Animal的子类,都重写了Animal类的sound()方法。在Test类中,ani1和ani2都是Animal类型的变量,但它们定义时又传入了Dog的对象和Cat的对象。ani1.sound()和ani2.sound()会调用Dog和Cat的sound()方法,实现了多态。
3. 两个Java面向对象编程设计的示例说明
3.1 示例1:汽车类的设计
public class Car {
private String brand; //品牌
private String color; //颜色
private int price; //价格
private String plateNumber; //车牌号
public String getBrand(){
return brand;
}
public void setBrand(String brand){
this.brand = brand;
}
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public int getPrice(){
return price;
}
public void setPrice(int price){
this.price = price;
}
public String getPlateNumber(){
return plateNumber;
}
public void setPlateNumber(String plateNumber){
this.plateNumber = plateNumber;
}
public void run(){
System.out.println("The car is running...");
}
}
这个类中,封装了品牌、颜色、价格、车牌号等信息并提供公开的getter和setter方法进行获取或修改。也提供了一个run()方法表示车辆行驶。
3.2 示例2:员工类的设计
public class Employee {
private String name; //姓名
private int age; //年龄
private int salary; //工资
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;
}
public int getSalary(){
return salary;
}
public void setSalary(int salary){
this.salary = salary;
}
public void work(){
System.out.println("The employee is working...");
}
public void rest(){
System.out.println("The employee is resting...");
}
}
这个类中,封装员工的姓名、年龄、工资等信息,定义了两个方法:work()表示员工在工作,rest()表示员工在休息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:理解Java面向对象编程设计 - Python技术站