面向对象
Hello!CSDN的小伙伴们。
这里是老汉的Java成长之路专栏,感兴趣的话就关注老汉并订阅本系列的专栏一起学习吧。
前言
本期老汉为大家介绍Java面向对象的相关知识,在初识这一期我们有提到过Java是面向对象的一种语言,那么什么是面向对象呢,下面就跟随老汉来一起学习一下吧。
一、什么是对象
万物皆对象、客观存在的事物
对象:用来描述客观事物的一个实体,由一组属性和方法构成
二、什么是面向对象
人关注对象
人关注事物信息
也就是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
三、类
类是模子,确定对象将会拥有的特征(属性)和行为(方法)
类的特点:
1.类是对象的类型
2.具有相同属性和方法的一组对象的集合
四、什么是对象的属性和方法
1.属性
对象具有的各种静态特征
俗气点来说就是这个对象“有什么”
2.方法
对象具有的各种动态行为
俗气点来说就是这个对象“可以做什么”
五、类和对象的关系
类是抽象的概念,仅仅是模板
对象是一个你能够看得到、摸得着的具体实体
类是对象的类型
对象是特定类型的数据
具体开发过程中,先定义类再实例化对象
六、单一职责原则
单一职责原则,也称为单一功能原则
英文Single Responsibility Principle 缩写SRP
是面向对象设计中的一个重要原则
一个类,应该有且只有一个引起变化的原因
在程序设计中,尽量把不同的职责,放在不同的职责中,即把不同的变化原因,封装到不同的类中。(一个类只存放同类型属性与方法)
七、对象实例化
1.实例化对象的过程分为两部分:
声明对象 Person per
实例化对象 new Person();
Person per=new Person();
2.每次new对象会产生新的实例化对象
Person per1=new Person();
Person per2=new Person();
3.多个对象可以指向同一块实例化空间
Person per1=new Person();
Person per2=per1;
注意:
对象必须被实例化之后才能使用
对象间的引用传递,实际上传递的是堆内存空间的使用权(栈中存放的是对象在堆中的地址)
八、构造方法
1.构造方法与类同名且没有返回值
2.构造方法的语句格式
public 构造方法名(参数/无参){
//初始化代码
}
3.只能在对象实例化的时候调用
4.当没有指定构造方法时,系统会自动添加无参的构造方法
5.当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
6.一个类中可以有多个构造方法
九、this关键字
this:当前对象的默认引用
this的使用如下:
1.调用成员变量,解决成员属性和局部变量同名冲突
/**
* 双参构造方法
* @param name 姓名
* @param age 年龄
*/
public Person(String name,int age){
this.name=name;
this.age=age;
}
注意:不使用this对name与age进行区分,传入的参数无法对对象属性进行赋值,但程序可正常运行。
解决方法:
a将参数名进行更改,更改为name1,age1或者其他不与属性名产生同名冲突的参数名;
b使用this关键字加以区分。
2.调用成员方法
//成员方法:笑、睡觉
/**
* 笑的方法
*/
public void smile(){
this.sleep();//利用this调用睡觉的方法
System.out.println("这个人在笑");
}
/**
*睡觉的方法
*/
public void sleep(){
System.out.println("这个人在睡觉");
}
3.调用对象的构造方法
/**
* 无参构造方法
*/
public Person(){
}
/**
* 双参构造方法
* @param name 姓名
* @param age 年龄
*/
public Person(String name,int age){
this();//调用无参构造方法
this.name=name;
this.age=age;
}
注意:此处的this只允许放在代码中的第一行(第一条语句),其他位置均会报错。
本期小结
到这里我们就结束了本期关于面向对象的学习,本期知识点基本为概念性知识,需要自行配合相关编写操作加以理解和掌握。最后,老汉在这里送各位一句话一同共勉——“改变就有希望,突破才能变强。”,感谢各位观看。