6.面向对象

编程思维的发展史:

  • 基于过程:从计算机角度 解决问题 C语言
  • 面向过程:上帝视角 解决问题干预问题 C++ C#
  • 面向对象: C++
  • 面向接口
  • 面向切面
  • 面向微服务和分布式编程

1.面向对象(面试)!!!※※※※※

问:谈谈你对面向对象的理解?
答:

从程序猿的角度,把世界上所有的东西用代码进行合理的呈现,java引入了类的概念.类是对具有相同或者相似特征以及行为的一些对象的抽象化,对象是对类的具体化.
我们改变了传统一步一步按部就班编写代码的思维,把对象抽象成类,把类表示成属性和方法的集合体.属性描述的是类的名词特征,方法描述的是类的行为特征.
举个去饭店吃饭或者买个电脑玩游戏的例子

面向对象有三大特征:封装性、继承性、多态性

  • 封装性指的是在类的内部,将属性设置为private,通过对外的公共的set及get方法对属性进行访问,根据需要在set方法中对属性值的有效性进行判断,保证属性值的合理性(安全)。
  • 继承性,在类和类之间建立一种关系,有了继承关系后,子类就可以访问父类中允许访问的成员.把共同的成员写在父类中,子类仅保留了自己独有的成员即可,当增加子类后,只需继承父类即可,达到了代码复用的效果。继承是作为多态的前提的
  • 多态是同一父类类型,调用相同的方法后,表现出不同的状态.好处是当程序扩展后,代码的改动量最小。

-------------面向对象和面向过程的对比:

  • 都是看待问题的一种思维方式,都能解决问题
  • 面向过程着眼于所有的事情亲力亲为
  • 面向对象着眼于找到一个具有特殊功能的对象,委托这个对象帮忙去做某件事情

注意:面向对象时一种思想,并不是一门编程语言

2.类

java中万物皆类

类是对具有相同或者相似特征以及行为的一些个体的抽象化
类是抽象的概念,我们把相同或者相似的特征称为属性(名词).把行为称为动作(动词)
属性用变量来表示,动作用方法来表示

3.对象

类是对象的抽象,对象是对类的具体化

4.类的构建

class 表示一个类

语法: 新建一个java文件,new java Class.

public class 类名{

}

类名必须和.java文件的名字完全一样

属性:
类中的属性允许是各种数据类型,一般不允许设置初始值,且位于方法外面,类里面,和方法平级

5.class和java文件的关系

一个java文件允许包含多个class,但开发规范不允许
内部类和lambda除外
注意:有且只有一个被public修饰的类,且该class的名字要和java文件的名字完全一致

6.对象的构建

使用类构建对象----------->把抽象化的东西具体化
类构建对象 <>类的初始化 <>初始化一个对象<==> 实例化一个对象

  • 语法:
    1)需要重新构建一个类,并且设置main方法
    2)使用如下的方式构建一个对象
    类名 对象的名字 = new 类名();
    例如:Book book01 = new Book();

对象属性的访问:

  • 语法:
    对象的名字.属性的名字
    例如:
    book.name
  • 给属性设置值:
    对象的名字.属性的名字 = 值;
    book.name = “cc”;
  • 获取属性的值:
    注意:如果不设置值,获取值的时候采用默认值
    语法:
    属性的类型 变量名 = 对象的名字.属性的名字;
    例如:String bookName = book.name;
    syso(bookNmae);或者syso(book.name);

7.面向对象中类的设计

  • 1)明确类的名字,命名规范和标识符命名规范相同,注意首字母必须大写
  • 2)明确属性的类型/个数和名字,根据需要确定即可
  • 3)明确方法的返回值类型/参数列表和名字,根据需要确定

8.对象方法的调用

语法:

对象名.普通的方法调用的语法();
  • 类中代码的复用:

类里面的属性和方法,可以被当前类的所有对象共享.但是A对象关于α属性的值专属于A对象的,B对象关于α属性的值专属于B对象.
代码的复用性和对象之间的隔离性共存!!!

9.类中方法对于属性的访问

  • 类中的方法可以直接使用本类中的属性
  • 方法调用的时候需要设置相关属性的值

10.构造方法 ※※※※※

是方法,但比较特殊

特点:

  • 1)该方法的方法名必须和类名完全一致,首字母大写
  • 2)该方法没有返回值类型,连void都不能设置
  • 3)该方法内部一般不允许存在较为复杂的结构(分支和循环)
  • 4)该方法无法被程序猿调用,在构建对象的过程中,该方法被系统自动调用,在new 类名()时自动调用
  • 5)一个类至少包含一个构造方法
  • 6)如果程序猿不写构造方法,系统会自动生成一个默认方法体为空的不可见的构造方法;如果写了,系统自动生成的构造方法就会消失
  • 7)构造方法允许重载

语法:

类名(参数列表){
	方法体;
}

11.构造方法的重载

在某些情况下可以使用构造方法对类的属性进行初始化
构建对象的时候需要在new className();的小括号里面指定参数的值来决定调用哪个构造方法

12.eclipse断点调试

允许调试的位置:

  • 出现bug过着未知的错误可能位置
  • 方法的调用位置
  • syso输出位置
  • 其他任何合理位置

断点就是代码执行到该位置"之前"!!!暂时停顿,之后可以根据实际情况手动放行该代码

13.this

this是当前对象的引用

我们可以在类的属性前面加this,构成this.属性的结构,可以把类属性方法的参数进行区分
如果类的属性和方法的参数不重名,可以不写this,也可以写.但是注意,this只能修饰类的属性和类的方法,不能修饰参数

  • (1)this调用本类中的属性,也就是类中的成员变量;
  • (2)this调用本类中的其他方法;
  • (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。

快捷键:
ALT+S-------->generate constructor using fields

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值