好的,我可以帮你生成一本Java面向对象学习笔记。Markdown是一种轻量级的标记语言,根据格式可以生成丰富的排版效果,使用起来比较简单。
Java 面向对象学习笔记
面向对象的基本概念
在Java中,面向对象编程是指将现实中的事物抽象成一个个对象,并通过对象之间的交互来完成程序的功能。
面向对象编程的三大特性为:封装、继承和多态。
封装
封装是指将数据和行为封装在一个对象中,对外提供公共接口来访问对象。这样做可以保证对象的行为不受外界的干扰,也可以隐藏对象的内部实现细节。
javaCopy Codepublic class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return this.age;
}
public void setAge(int age){
this.age = age;
}
}
上述例子中,通过将name
和age
属性设置为私有属性,防止直接访问和修改它们的值。提供了对外的访问方法,getName()和getAge()方法来获取该类的属性值,同时提供了setName()和setAge()方法来修改该类的属性值。
继承
继承是指一个类可以继承另一个类的属性和方法,这个类称为子类。被继承的类称为父类或者基类。
子类可以覆盖父类的属性和方法,也可以添加自己的属性和方法,以此实现代码的复用。
javaCopy Codepublic class Animal{
private String name;
private int age;
public Animal(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return this.age;
}
public void setAge(int age){
this.age = age;
}
public void eat(){
System.out.println("I'm eating");
}
}
public class Dog extends Animal{
public Dog(String name, int age){
super(name, age);
}
public void bark(){
System.out.println("Woof");
}
}
上述例子中,Dog类继承了Animal类的属性和方法,并添加了自己的bark()方法。
多态
多态是指同一个方法在不同的对象上执行时会产生不同的行为。多态可以通过父类引用指向子类对象来实现。
javaCopy Codepublic class Shape{
public void draw() {}
}
public class Circle extends Shape{
@Override
public void draw(){
System.out.println("Draw a circle");
}
}
public class Rectangle extends Shape{
@Override
public void draw(){
System.out.println("Draw a rectangle");
}
}
Shape s = new Circle();
s.draw(); // Draw a circle
s = new Rectangle()
s.draw(); // Draw a rectangle
上述例子中,通过在父类Shape中定义draw()方法,在子类Circle和Rectangle中覆盖该方法实现不同的绘制方式。用Shape类型的引用变量s引用Circle和Rectangle对象,调用s的draw()方法时会分别调用不同的实现。
面向对象的设计原则
面向对象编程中常用的设计原则有:单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则。
单一职责原则
单一职责原则是指一个类只负责一个功能领域中的相应职责。
例如,将用户信息管理和订单管理分别封装在不同的类中,避免一个类承担过多职责,增加类的复杂度和耦合度。
开放封闭原则
开放封闭原则是指一个类应该对扩展开放,对修改关闭。通过抽象化来实现代码的可扩展性。
例如,在增加新的支付方式时,我们可以通过接口的方式来实现,而不是修改原有的代码。
里氏替换原则
里氏替换原则是指子类可以替换父类出现在任何一个地方,而不影响程序的正确性和可靠性,前提是这些使用的都是父类定义的方法和属性。
例如,在用Animal类型的变量引用Dog对象时,Dog类可以替换Animal类,因为Dog类继承Animal类并实现了其所有方法。
依赖倒置原则
依赖倒置原则是指要依赖抽象,而不要依赖具体实现类。高层模块不应该依赖底层模块,它们都应该依赖于抽象。
例如,在实现邮件发送功能时,我们不应该直接依赖于具体的邮件服务器,而是定义一个邮件发送接口,由具体的邮件服务器实现该接口。
接口隔离原则
接口隔离原则是指使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖不需要的接口。尽量将接口设计得精细独立,避免出现冗余接口或者不必要的接口。
例如,当定义一个文件上传接口时,我们可以将文件的上传和下载分别设计成两个独立的接口,避免定义一个庞大的文件操作接口。
迪米特法则
迪米特法则是指一个类应该对其它对象有最少的了解,尽可能将自己和外界隔离开来。
例如,在类的设计中,我们尽量避免过多地引用其它类,减少类之间的耦合度,提高代码的可维护性和可扩展性。
以上是Java面向对象学习笔记的基本内容,希望对你有所帮助。