1 类 属性 方法 对象
2 封装 类的三大特性
3 访问修饰符
封装
属性为了安全,不被外部随意访问,所以会使用访问修饰符private修饰。
类似现实世界中的 快递包
1 private 只有在本类中可以访问
比如在People中的main方法使用Car时,不能访问Car的color属性。
The field Car.color is not visible
Car的color属性是不可见的
2自己创建的类是引用类型,可以做为属性存在。
3 一般情况下,对于model类,只需要完成属性和方法,不涉及任何业务逻辑,也就是main方法也不需要。
因此,main方法出现在负责管理和调度的相关类中。
如我们的程序,main方法只放在CarManagement中。
4 私有的属性无法直接访问,但是可以通过专门的set和get方法访问
像这样的方法 称之为setter,getter
4.1 set 方法
4.2 get方法
5 this 在set方法中代表本类的对象,翻译成”我”
this.name = name;
6 访问修饰符 权限
针对的修饰:类,属性,方法,接口。
针对范围:同一类内,同一包中,子类,不同类。
所以:java使用了不同类型的访问修饰符,控制权限,安全得以保障。
总结:set和get方法的调用:
1 创建了两个model类 People,Car
2 定义了一些属性 比如People中姓名,性别,身高,体重
Car中 车的颜色
3 创建了一个管理类CarManagement,存在一个main方法,在main中去使用People和Car这两个类(创建对象,调用方法)
Tips:eclipse提供快速生成setters和getters的方式:
1 快捷创建setters 和getters
2 对于一个类有多个属性,可以使用eclipse工具,一次性创建多个set和get方法
注意:boolean类型的getter方法的方法名为isXxx
Pm:
1 构造方法 Constructor 构造器
2 继承
1 构造方法
目的:创建对象,并完成对象的初始化initialize。
之前定义变量时,都赋予一个初始值,也称之为变量的初始化。
int age = 0;
然后针对一个对象,也需要进行初始化,毕竟对象里面有很多属性值,一般情况下,我们通过构造方法来完成对象的初始化,即完成对象中属性(成员变量)的初始化,也就是给属性以默认值。
构造方法的定义:
1 无参构造(默认构造方法)
比较特殊
1.1没有结果类型 方法名与类名相同
1.2调用时 放在new的后面
1.3默认构造也称为隐式构造,但是我们把无参构造写出来就会覆盖默认构造。
1.4调用构造,完成对象的初始化操作,即属性值给予默认值。
整型 0
小数 0.0
Boolean false
Char ‘ ‘
引用类型 null
2 有参构造
目的:无参+setter
创建对象,并且完成对象的初始化,初始化工作中对属性赋值来源于有参构造的参数。
定义:
调用:
Tips:
可以使用eclipse快速 生成 构造方法
额外知识: this()
构造之间也能相互调用
一个类中方法之间是可以相互之间调用的,构造方法也是方法,所以构造方法间也能相互调用,但是构造方法因为特殊,所以调用时,使用this()的方式。
一个构造种去调用另外一个构造,使用this关键字,必须写在第一行。
2 继承 extends
类的三大特性
张三的 儿子张小三 买 绿色的桑塔纳。
Java世界中,表示继承,存在 子类与父类。
倘若一个类中的属性和方法,在另外一个类也同样的使用,一般会考虑继承关系。
父类/超类 superclass People
子类/派生类 subclass Man
表示继承:
好处:父类有的,子类都会有。
2.1 子类继承父类,会继承父类非私有的属性和方法。当然子类也会有自己的属性和方法。
2.2 Object 顶级父类
默认创建的类 都继承Object,而Object存在在JDK中。
2.3 java单继承 不支持多继承,但是java通过接口实现多继承。
2.4 支持多重继承(一个类有一个父类,可以有多个子类,可以有多个孙类)
2.5 一个类可以有多个子类
总结:一个类调用一个方法,这个方法可能是在自己类中定义的,也可能是在父类中定义,也可能在父类的父类。。。中定义的。
2.6 在继承中,构造方法是不会被继承的。
2.7 在继承中,子类调用无参构造时,会先调用父类的无参构造。
2.8 难点 子类的有参构造中,是可以调用父类的有参构造的。目的就是将父类的私有属性继承过来。
注意:构造方法的调用只存在构造方法中,调用本类的使用this(),调用父类的使用super(),且调用的代码必须在第一行。
构造方法也可以同时包含父类的属性和子类的属性:
Tips:
在实际的开发过程中,继承用的非常多,一般考虑使用继承的出发点是,有两个类存在相同的代码,所以,把相同的代码提取出来,变成父类。将来倘若有第三类也用到父类的代码,自己继承父类即可。
总结:继承的作用就是扩展。Extends
将来会使用第三类库,比如框架spring,要能看懂继承的结构。