Java中定义类的格式
格式分析
class 类名 {
属性描述;
行为描述;
}
类名:
要求符合大驼峰命名法,见名知意
类名这里可以认为是一个数据类型名,自定义数据类型
属性描述:
描述当前类有哪些属性
例如:
人类的身高体重,年龄姓名
行为描述:
描述当前类有哪些行为
例如:
人类的吃饭行为,睡觉行为,打游戏行为
Java中创建对象的格式
格式样式;
Scanner扫描器
Scanner sc = new Scanner(System.in);
赋值号左侧:
Scanner:
数据类型名,Scanner类,【类名】。
sc:
sc 可以认为是Scanner类的对象,sc对象名,同时也是
一个【引用数据类型变量】
赋值号右侧:
new:
- 在内存的【堆区】申请当前对象所需的内存空间
- 擦除整个内存空间中的所有数据,所有的内存空间中二进制位都是0
Scanner(System.in);
和类名同名的方法目前 类名();即可
格式:
类名 对象名 = new 类名();
操作类内的成员变量格式:
类对象.成员变量名 可以赋值操作,可以取值操作
构造方法
用于在开发过程中创建对象使用,创建对象目前的格式new 类名(有可能使用到的参数);
类名(有可能使用到的参数); 这就是构造方法 Constructor
初始化当前创建对象中的成员变量数据!!!
格式:
public 类名(所需初始化参数列表) {
初始化语句;
}
细节:
- 构造方法的名字必须是类名,并且其他方法的名字不能是类名
- 构造方法没有返回值类型声明
- 初始化参数列表和正常的方法列表操作使用一致
- 初始化语句,大多数是都是一些赋值语句
- 代码中无论什么时候都要给用户提供一个无参数构造方法使用
类对象内存分析图例
this关键字
this关键字表示对象本身
- 调用当前方法的类对象
- 通过构造方法创建的类对象
this表示一个对象!!!当前对象!!!
可以在方法中使用this关键字区分操作的是成员变量还是局部变量
封装
面向对象三大特征
封装 、继承 、多态
Java中规范化封装
要求:
- 所有的成员变量全部私有化【private修饰】
- 要求至少完成一个无参数构造方法,其他无所谓
- 要求给予所有的成员变量对应的setter和getter方法
权限修饰符
private
私有化内容,使用private修饰的成员变量,成员方法和构造
方法,有且只能类内使用,类外没有操作权限。
使用private修饰的内容有且只能在class所处大括号以内使
用
public
公开内容,只要存在对应的类对象,都可以通过类对象调用类内
的public修饰的成员变量和成员方法
解决私有化成员变量赋值和取值操作问题
private私有化修饰的成员变量,类外不能通过类对象操作,取值,赋值。
JavaBean规范规定:
setter ==> 赋值操作
格式:
public void set成员变量名(对应成员变量数据类型参数) {
赋值操作;
}
getter ==> 取值操作
public 对应成员变量数据类型返回值 get成员变量名字() {
return 成员变量;
}
注意
- 方法格式固定,setter和getter方法操作过程不能修改
- 方法需要符合命名规范,小驼峰命名法
- boolean类型数据较特殊
boolean类型的成员变量getter方法要求是is开头
关于JavaBean规范的总结
JavaBean规范制定的要求
4. 要求Java中的所有实体类成员变量全部私有化,最少提供
一个无参数构造方法,对应成员变量实现setter和getter方法
5. JavaBean规范,是为了后期开发汇总更好的代码适配度,
提高代码运行的统一性,能够满足框架的使用
6. JavaBean规范只是一个规范,而且是作为一个基础规范,
操作都是可以使用快捷键来完成的!!!
多类合作
7. 类和对象的操作模式
类是数据类型定义
对象是目前操作成员方法,操作成员变量的核心
8. 这两组代码在main方法中基本上全部是一个面向对象思想
a. 自定义数据类型,自定义类对象,作为方法参数。
b. 通过类对象来操作代码方式,所有的内容都是和对象相关
9. 代码需要阅读,一定要阅读!!!
不要断章取义!!!
. 就是的
10. 代码中要什么你给什么
匿名对象
代码示例:
Person person = new Person(“杰”, 66, ‘男’);
Person 类名
person 对象名
new Person(…) 像内存的堆区申请空间,创建一个Person类对
象使用的内存空间
匿名对象
没有名字的对象,没有对象名的对象
格式:
new 构造方法(所需参数)
用途
11. 提高开发效率,一次性筷子
匿名对象当前行使用之后,如果没有其他引用数据类型的变量保存其地址,直接销毁
12. 简化代码结构
13. 通过匿名对象直接调用成员方法
14. 使用匿名对象作为方法的参数
总结
15. 匿名对象是为了提供开发效率,节约内存使用,同时让代码更加
贴近于真实操作
16. 匿名对象常用方式
第一个是直接使用匿名对象调用成员方法
第二个是直接使用匿名对象作为方法的参数
17. 匿名对象【禁止】使用成员变量
继承
继承在开发中是一种抽象的归纳总结思想,剥离通用的属性,通用的方法,简化之后的开发压力。只需要在继承之后,满足个性化的实现即可。
通过继承可以优化代码,在JavaWEB开发中,继承大多数情况下,都是用来提高方法的复用度。
Java中继承如何完成
关键字:
extends
格式:
class A extends B {
}
A类是B类的一个子类
B类是A类的唯一父类
【Java是一门单继承语言,一个类有且只能继承一个父类】
继承小总结
- A类使用extends关键字继承B类
A类是B类的一个子类,B类是A类的唯一父类 - 继承之后,子类可以通过继承得到父类中非私有化成员变量,和
非私有化成员方法 - 继承之后,子类不可以通过继承得到父类中的私有化成员变量和私有化成员方法。
private修饰的内容有且只能在类内使用!!!
继承图例
重写【Override】
前提条件
4. 重写是存在与继承中子类,或者【遵从中的实现类】
5. 重写情况下要求子类中的方法和父类中的方法,方法声明完
全一致
6. 方法体按照子类的情况来完成
注意事项
7. 子类重写父类方法,要求必须加上@Override严格格式检
查
8. @Override会检查子类重写的方法,方法声明是否和父类
一致
继承情况下:
9. 父类的方法不符合子类的情况
10. 需要重写的情况下,但是子类不重写没有任何的语法错误
11. 会导致代码在实际运行阶段不符合生活逻辑和需求
【强制重写】
abstract关键字
abstract修饰的方法,子类必须重写
abstract使用特征
12. abstract修饰的方法 没有方法体
13. abstract修饰的方法,要求定义在abstract修饰的类内,或者接口interface内
14. abstract修饰的类,没有类对象
abstract修饰的类内,是有可能存在abstract修饰的方法,而abstract修饰的方法是没有方法体的,如果能够得到一个abstract修饰类的对象,通过对象如何调用这些没有方法体的abstract方法。
15. abstract修饰的类,然后呢类内没有任何的一个abstract修饰
的方法,毫无意义!!!
重载【Overload】
要求
16. 重载是要求在同一个类内,或者接口interface内
17. 重载要求方法名必须一致!!!
18. 重载要求方法的参数必须不一致!!!
19. 重载对于方法的返回值没有任何的约束!!
super关键字
20. super关键字可以用于在子类和父类之间,同名成员变量,同名成员方法调用时明确区分。
21. super关键字可以显式调用父类的构造方法,用于初始化父类的成员变量数据。
22. super关键字使用的格式,规范和this非常类似。
final关键字
最终!!!
final关键字可以修饰
局部变量 有且只能被赋值一次,赋值之后不可以修改
成员变量 定义时必须初始化,未初始化报错
成员方法 使用final修饰的方法为最终方法,不能被重写!!!
类 没有子类,不能被继承
Java中是存在一些类是使用final修饰的 String类