【Java】类和对象总结

语法
1、面向对象的三大特征:封装、继承、多肽

2、定义类
限定符 class 类名称 {
属性 / 静态属性
构造方法(必须要有,如果没定义,默认补一个无参构造方法)
方法 / 静态方法

1)属性
限定符 变量类型 变量名;
2)构造方法
限定符 类名称(形参列表) {执行语句}
3)方法
限定符 返回值类型 方法名称(形参列表) {执行语句}

public static int [] rotate(int [] a,int k) {
}

3、实例化对象的语法
new 构造方法(实参列表);
1)new 关键字 // 计算对象内存大小;在堆中申请内存空间;
2)执行构造方法 // 对属性进行初始化
3)把对象的引用赋值给一个引用变量,如果需要;

对象的生命周期:
1)代表对象刚刚申请好空间,内部被初始化为0x0
2)代表对象正在执行构造方法对属性初始化部分
3)代表对象的可使用生命周期阶段
4)代表对象已经被标记为垃圾,但可能还没有被立即收回

4、访问对象的属性或者调用对象的方法
1)如果在类的内部(在类的方法中访问类的属性和调用类的方法)
访问属性
this.属性----------------- 如果没有出现命名的遮挡问题直接使用属性
this.name-----------------name
调用方法
this.方法名称(实参列表)--------------方法名称(实参列表)
this.toString();------------------------------- toString();
2)如果在类的内部(在其他类的方法中访问该类的属性和调用该类的方法)
访问属性
对象的引用.属性名
Person p = new Person(); p.name;
new Person().name
调用方法
对象的引用.方法名称(实参列表)
Person p = new Person(); p.toString();
new Person().toString();

5、this 关键字的作用
1)可以在构造方法中调用其他的构造方法,必须出现在第一行
2)代表该方法被调用时的当前对象的引用

Person p = new Person();
p.toString();
public String toString() {
    this;      //现在 this 就是 p 所指向的对象的引用
}

6、理解类和对象的内存模型
类信息存在方法区
属性信息存在堆区

7、访问限定符
修饰顶级(Top level)
修饰成员级(Member level)
说法------------------------定义语法-------------------- 说明
public ----------------------public ------------------------所有类都有访问权限
package-private ---------空白 --------------------------只有一个包的类有访问权限
protected----------------- proteted---------------------- 继承时讲
private--------------------- private----------------------- 只有本类有访问权限

8、static 限定符
静态属性 / 静态方法
静态属性不再保存在对象(堆区)中,而是保存在类(方法区)中
static 的含义就是和对象解绑
静态方法调用时,没有隐含着的对象,所以也就无法使用this关键字
在静态方法中无法使用非静态的内容
静态方法中,无法访问普通属性,无法调用普通方法,无法使用 this 关键字
静态属性的存在且只存在一份,表现出共享的特性,类似全局变量

9、属性的初始化规则
静态属性:
1)定义时直接初始化

   static  int a=10;

2)静态代码块初始化
static {初始化语句}

static
{
     a=20}

普通属性:
1)定义时直接初始化

 int a=10

2)初始化代码块初始化
{初始化语句}

{
     a=10}

3)在构造方法中

Person()  {a=10;}
class A
{
    {
        a=0;
    }
    int a=10;
    {
        a=20;
    }
    A()
    {
        a=30;
    }
}

时机:
静态属性:类被加载到内存中时
普通属性:对象被实例时
顺序:
1)类的加载一定发生在对象实例化之前
静态属性的初始化一定在普通属性的初始化之前
2)静态属性初始化顺序,按照定义类时的初始化顺序初始化
3)普通属性初始化顺序,定义时和构造代码块按书写顺序初始化
构造方法中的初始化一定发生在最后,和书写顺序无关

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值