面向对象语言
顶级(top level)
<变量 两种类型>
1.基本数据类型
数值 整形 byte short int long
浮点 float double
字符 char
布尔 boolean
2.引用类型
数组类行引用
类类型引用
接口类型引用
Java中没有过对象类型的变量
<引用:是指向对象的一个线索 当前引用为空时null 表示该引用没有指向任何对象>
设计一个表现多态的数组类型的引用
Class person(){}
class Teacher extends Person{}
class Student extends Person{}
变量有四种形式
1.形参
2.局部变量
3.属性
4.静态属性
Java内存区域划分
1.栈区
2.堆区
3.方法区
this的三个作用
1.通过this调用本类的其他构造方法 方法签名 方法重载
2.代表指向本对象的引用
3.可以访问本对象的属性或者方
构造对象的语法
Node node = new Node(1)
new 为对象计算所需内存大小
在内存中申请空间
初始化0x0
static 只能出现在成员级别 与对象进行解绑
1)静态属性
属性存放在对象上,对象存放在堆上,静态属性存放在类上(方法区)上
2)静态方法
不能直接访问属性 不能直接调用普通方法
3)静态内部类
<访问限定符>
1.public
2.private
3.protected
4.不写
AA AB AC BA BB AAI
1 1 1 1 1 0 1
1 1 1 1 0 1
1 1 1 0 0 1
1 0 0 0 0 1
顶级只有两个1.public 和 不写
成员级别public 不写 private protected
继承与接口
1.继承
class 类名 extends 父亲{}
super关键字1.调用父类的构造方法
2.去访问被隐藏的父类属性,去调用被覆写的父类的方法
关于类的加载和对象的构造(实例化)过程
类的加载
1.什么是类的加载:在硬盘上找到Node class 解析该文件内容 生产Node类 吧Node类的信息存放到内存的方法区。
2.什么情况下会触发类的加载
1)按需要加载
1. 实例化该类的一个对象-
2. 用到子类必须先要有父类
3. 使用类的静态方法或者静态属性
静态属性额初始化顺序:
按照代码的书写顺序执行
1.静态属性定义时的.
3.类的加载过程中有什么重要的规则
静态属性的初始化顺序:
按照代码书写的顺序执行
1.静态属性定义时的初始化
2.静态代码块
对象的构造/实例化 new Node
规则:
1.优先初始化父类的属性
2.按照下面的顺序初始化
按照代码的书写顺序,执行定义时和构造代码块
再去执行构造方法
abstract
1.如果修饰类,该类为抽象类 无法被实例化的类
abstract class A {} new A();
2.修饰方法 该方法是抽象方法 没有被实现的方法
abstract void method ();
包含抽象方法的必须是抽象类抽象类不一定包含抽象方法
final关键字可以修饰
1.变量 该变量的值只能被初始化一次 无法被再次修改
2.类 表示该类无法被继承
3.方法 该方法无法被覆写
重载 重写 覆写
覆写 发生在子类继承父类或者实现接口
方法名 和 形参列表相同
方法的返回类比父类的返回类型小
访问限定符只能比父类的大
interface 接口名 extends A,B,C{
void method();
引用 = 对象; 没有 引用指向的引用,对象指向的对象
1.引用只能指向对象,或者什么都不指向
2.数组引用,类类型引用,接口类型引用
3.对象:数组对象,非抽象类类型的对象
}