面向对象思想
面向对象与面向过程
一个经典的问题,
把大象装进冰箱分几步。
对于面向过程思想来说。
三步走,
- 打开冰箱
- 装进去
- 关上冰箱
但是对于面向对象思想
在问题中涉及到两个对象
大象 冰箱 贯穿问题是始终的对象为 冰箱
所以冰箱的行为为
- 冰箱->开门
- 冰箱->装东西
- 冰箱->关门
然后确定了对象的行为我们把对象的行为组织好,就完成了整个问题。
以上不难看出,其实面向对象思想中包括面向过程思想。只是面向对象站在一个更高的层次来看待问题的解决的办法。
对象与类
对象,我们所说的对象是一种现实中具体存在的事物。
在代码中,对象就是在程序具体运行过程中的一块“内存”。
(可以这样理解,但是不够直观,因为这个地方每个人的理解不太一样,学下去你就会知道在你的理解中对象具体是什么。)
类,类是对现实中一类事物的抽象的描述,类是一种概念。
类主要存在两个点:一个是事物的共同的特征,二是事物的共同的行为。
在Java中,类就是一段代码,它也是一种数据类型。
类是对象的抽象描述,对象是类的一种具体化,实例化。
在一个Java文件中,应该有且只有一个public类,而且这个类的名字要与文件名一致。
构造方法
每一个类中都会有一个与其名字一样的方法,(可以写出,也可以不写,也可以重写),他的二作用是用来创建类的对象。
- 类的构造方法是不能有返回值
- 类的构造方法必须与类名一致
- 如果没有定义构造方法,编译器会自动定义一个无参的构造方法。如果定义了构造方法,编译器将不会创建。
- 构造方法可以重载
当然有方法的重载,就应当有变量或者说是属性名字一致的情况
1.在构造方法中,this代表的是当前创建变量的属性。
2.在普通方法中,代表的是当前调用方法属性。
面向对象的三大特征
- 封装
- 继承
- 多态
封装
- 广义封装
编写一个类的过程就是一个封装的过程
封装要遵循高内聚低耦合
高内聚:功能高度集中,一个类不应该有过多的功能。
低耦合:各功能之间的联系越少越好 - 狭义封装
在Java中,类中的内部信息尽量隐藏起来。
就是将类中的属性全部使用private修饰,让他变成私有的属性变量
那么怎么获取呢,构造公共的get,set方法
继承
继承描述的就是类与类之间的关系
字类:继承别人的类就是字类。
父类:被别人继承的类就是父类。
在这钟继承的关系下,
- 字类会继承父类所有的属性和方法。
- 字类还可以扩展自己的属性跟方法。
- 子类可以重写父类的方法
- 子类可以定义与父类一致的属性,但是不是同一个。
- 一个类只能有一个直接的父类,(单继承)。
- 继承是可以传递的(即字类可以继承父类继承的属性与方法)
- 构造方法是不会被继承的(构造性)(构造方法不算是一个方法,所以它不会被继承),虽然他不会被继承但是在字类创建对象时,会先调用父类的构造方法,然后再调用子类的构造方法。
package demo2;
public class Person {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
<