关于java类
一个java源文件只能有一个 public class(规定)
文件名要和公有类类名一致
源文件可以有多个类但不能都是公有的
如果没有公有类,文件名与某个类类名一致
一般情况下: 一个源文件 一个类 类是公有的
类体中的成员:
属性
方法
构造器
语句块
成员不能重复
属性名不能重复
构造器签名不能重复
方法签名不能重复
1、方法签名(方法的识别关键字)
方法签名=方法名+参数类型列表
java类中不能存在相同方法签名的方法
方法的重载就是动词的多意表现 吃饭 吃亏
就是行为的多态
2、方法的参数传递规则 是基于值得传递 是变量值的赋值
1)基本类型就是值的复制
2)引用类型是引用值(地址)得复制,对象不复制
3) 变量的值
基本类型的值是其本身
引用变量的值是一个地址值 是被引用对象的首地址 为了避免参数传递的副作用
建议一切结果使用返回值带回
继承 类型的继承
1)继承体现了自然逻辑系统中的分类关系
2)父类型声明所有子类的公共特征(公共属性)和行为(方法)
3)子类可以继承父类型的可以继承的属性和方法
4)继承可以实现代码的复用,子类可以不用再定义了
5)子类可以声明特有的属性和方法 叫 特化(具体化, 特殊化)
6)子类可以覆盖(重写)父类型的方法 实现多态行为
3、继承 用来表达概念上具体化延续的具体概念
1)子类继承父类的属性和方法(子类可见的方法)
2)构造器不能继承
3)实例化子类 会递归分配所有父类的空间
4)子类构造器一定调用父类构造器
类一定有构造器
4、关于继承中的构造器
1)子类构造器中一定调用父类构造器
2)子类构造器默认调用父类无参数构造器
3)如果父类没有无参数构造器 就必须明确的表明在子类中指定调用父类的有参数构造器
4)使用super()调用父类的构造器必须写在子类构造器的第一行
this()写在子类构造器的第一行
5、对象的实例化过程
1)按需加载类 以及所有的父类型 只加载一次
2)递归调用所有的父类构造器
父类中
分配父类属性空间 自动初始化为默认值
执行属性初始化赋值
执行父类构造器过程
子类中
分配子类属性空间自动初始化为默认值
执行属性初始化赋值
执行子类构造器过程
最后创建的对象(子类实例)包含所有父类型属性的属性空间
6、继承中的语法规则
1)父类型的变量可以引用子类型的实例 父类型的实现是多态的
2)子类可以覆盖父类的方法 修改父类的行为
方法覆盖:子类覆盖了父类相同方法签名的方法
方法的覆盖是由方法动态绑定实现的 就是java 虚拟机运行时候确定执行那个对象那个方法
java最终执行子类的方法