面向对象设计简介
- 面向对象设计的优点:
a. 更符合人类的思维习惯,贴近生活
b. 代码可重用性高
c. 代码可维护性高
d. 提高了软件开发和设计的效率 - 面向对象和面向过程的区别:
a. 面向过程侧重的是算法和流程,按main函数入口,先做什么,再做什么
b. 面向对象侧重的是数据本身,有哪些对象,对象存储哪些属性(数据),哪些行为 - 面向对象设计的过程就是抽象的过程:(提取有用的的数据就是抽象):
a. 发现类
b. 发现类的属性
c. 发现类的方法
构造函数(constructor)
- 构造函数常用于对属性进行初始化,或者完成一些初始化操作。
- 构造函数通常是共有的(即public)。
- 构造函数没有返回值类型,void也没有。
- 构造函数的函数名需要和类名相同。
- 在构建对象的时候,会调用该类的构造函数,这样构造函数可以强制对属性做初始化。
示例1
/**
* Description
*
* @Author SnowyHair
* @Date 2021/1/16 20:14
*/
public class Person {
public String name;
public int age;
public String sex;
//创建构造函数
public Person(){
System.out.println("我是constructor ");
}
public static void main(String[] args) {
//在new对象的时候会自动调用构造函数
Person person=new Person();
System.out.println(person);
}
}
输出结果:
我是constructor
- 如果类本身没有显式定义构造函数,则系统会为其添加一个默认的无参的构造函数。
示例2 带参构造函数
package cn.constructor;
/**
* Description
*
* @Author SnowyHair
* @Date 2021/1/16 20:14
*/
public class Person {
public String name;
public int age;
public String sex;
//创建构造函数
public Person(String name){
System.out.println("我是constructor ");
this.name=name;
}
public static void main(String[] args) {
//在new对象的时候会自动调用构造函数
Person person=new Person("张三");
System.out.println(person.name);
}
}
输出结果:
我是constructor
张三
如果只有一个带参的构造函数,那么创建对象的时候就必须传参。在带参构造函数中,传入了一个name参数,但是与Person类的属性name同名,那么就要用this关键字来区分。this关键字用于指代当前对象,this.name=name说白了this.name指的是Person类的name属性,若果不加this输出结果则会为null
方法重载(overload)
- 一个类里面可以有多个同名的但参数不一样的方法,叫方法重载
- 方法重载满足的条件
a. 同一个类中
b. 方法名相同
c. 参数不同(个数、顺序、类型) - 方法的返回值类型与方法重载无关
示例3
/**
* Description
*
* @Author SnowyHair
* @Date 2021/1/16 20:14
*/