浅谈Java中OO的概念和设计原则
一、面向对象的概念
面向对象是一种编程思想,将现实世界事物抽象成对象,对象之间通过方法进行交互,实现程序的功能。在Java中,每个对象由类来实现,类是一组具有相同属性和方法的对象的集合。
Java中三大面向对象的特性:封装、继承、多态。
1. 封装
封装就是把对象的数据和方法封装起来,对外提供统一的接口。封装可以保护对象内部的复杂性,使得外部调用者无需知道具体实现细节,而只需要通过接口进行调用。
示例代码:
public class Student{
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属性都设置为私有属性,外部无法直接访问,通过public的set和get方法提供了统一的接口,外部只能通过接口进行访问。
2. 继承
继承是一种从已有类派生出新类的机制,新类具有父类的所有属性和方法,并且可以新增自己的属性和方法。
示例代码:
public class Animal{
private String name;
public Animal(String name){
this.name = name;
}
public String getName(){
return name;
}
public void run(){
System.out.println(name + " is running...");
}
}
public class Dog extends Animal{
public Dog(String name){
super(name);
}
public void bark(){
System.out.println(getName() + " is barking...");
}
}
在上述示例中,Dog类继承了Animal类,具有Animal类的name属性和run方法,新增了自己的bark方法。
3. 多态
多态是指同一个方法在不同对象上有不同的实现,实现方法可以通过重载或重写实现。
示例代码:
public class Animal{
public void run(){
System.out.println("Animal is running...");
}
}
public class Dog extends Animal{
public void run(){
System.out.println("Dog is running...");
}
}
public class Cat extends Animal{
public void run(){
System.out.println("Cat is running...");
}
}
在上述示例中,Animal、Dog、Cat均有自己的run方法,都可以通过调用同名方法实现多态。
二、面向对象的设计原则
1. 单一职责原则
一个类和方法只负责一项职责,避免出现类和方法的职责不明确、过于复杂的情况。
示例:
有一个类A,负责管理用户的增删改查、权限管理、日志记录等功能,这样就会导致该类过于庞大且难以维护。将该类拆分为UserManager、PermissionManager、LogManager等类,使每个类只负责一项职责,提高代码可读性和可维护性。
2. 开闭原则
开闭原则是指对扩展开放,对修改关闭。在程序修改时,尽量是通过添加新的代码来增加新的功能,而不是对原有代码进行修改。
示例:
有一个类A,需要支持不同的支付方式,原有代码只支持支付宝和微信支付,现需要添加银行卡支付方式。通过对类A进行扩展,在现有代码的基础上添加新的支付方式,而不是对支付方式进行修改。
3. 里氏替换原则
里氏替换原则是指子类对象可以替换父类对象进行使用,而程序不会出错或产生异常。
示例:
有一个父类Animal和两个子类Dog、Cat,在父类的方法中使用子类方法实现多态。如果在Dog子类中重写了父类方法,但是该方法产生了异常,通过里氏替换原则,调用该方法将不会产生异常,因为Dog子类替代了父类并继承了父类方法。
三、总结
面向对象是一种开发思想,Java作为一门面向对象的编程语言具有三大特性:封装、继承、多态。面向对象编程需要遵循一定的设计原则,如单一职责原则、开闭原则、里氏替换原则等。遵循这些原则可以提高代码可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈java中OO的概念和设计原则(必看) - Python技术站