JavaSE——中——类和对象

  四.类和对象  

        你需要掌握类的定义以及对象的实例化,掌握类中的成员变量和成员方法的使用,掌握对象的整个初始化过程,掌握封装特性,掌握代码块,掌握内部类等等。

  面向对象  

        面向对象(OP)是解决问题的一种思想,主要依靠对象之间的交互完成一件事。

  类和类的实例化  

学会定义一个类:

  • 类目大驼峰
  • 成员前写法统一为public(目前)
  • 写的方法不带static关键字(目前)
class Person {
    public String name;
    public int age;
    public void eat(){System.out.println("eat!");}
    public void sleep(){System.out.println("slaap!");}
    public static void main(String[] args) {}
}

public class a {
    public static void main(String[] args) {
    }
}

        由类拿到对象的过程叫做实例化:

class Person {
    public String name;
    public int age;
    public void eat(){System.out.println("eat!");}
    public void sleep(){System.out.println("slaap!");}
}
public class a {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person[] person2 = new Person[3]; //这里也可以是数组
        person1.age=12;
        person1.name="beauty";
        person1.eat();
        System.out.println("age = "+person1.age+" name = "+person1.name);
        person2[0].age=16; //数组的相应用法近似
    }
}

        当一个引用赋值为null时,代表这个引用不能指向任意对象。引用不能指向引用。一个引用只能指向一个对象,否则指向最后一个对象。

  this引用  

        this的出现会避免很多情况下出现的问题,例如在写set函数时形参名与成员变量名相同,或者在成员函数在真正执行时函数体中没有关于任何对象的说明,不知道要执行的时哪个对象等

        this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。

class Date {
    public int year;
    public int month;
    public int day;
    public void setDay(int year, int month, int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void printDate(){
        System.out.println(this.year + "/" + this.month + "/" + this.day);
    }
}
public class a {
    public static void main(String[] args) {
        Date d = new Date();
        d.setDay(2020,9,15);
        d.printDate(); //如果没有this,打印出来的便是0/0/0
    }
}

  this引用的特性

  1.  this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2.  this只能在"成员方法"中使用
  3.  this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法,对象的引用传递给该成员方法,this负责来接收
  4. this不能调用静态的成员变量和成员方法
  • this.data:访问当前对象的成员变量
  • this.func():访问当前对象的成员方法
  • this():调用当前对象的其他构造方法

  构造方法  

        构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

方法重载:方法名相同,方法参数不同,包括参数的类型和个数都不同,叫做方法的重载!!!

特性:

  1.  名字必须与类名相同
  2.  没有返回值类型,设置为void也不行
  3.  创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
  4.  构造方法可以重载
  5.  如果没有定义任何构造方法,编译器会生成一份默认的无参的构造方法
  6.  一旦用户定义了,编译器就不在生成默认的构造方法
  7. 构造方法中,可以通过this调用其他构造方法来简化代码
  8.  使用this简化时,不能形成环——循环调用

        this还能除了上面的访问构造方法之外,还可以访问成员方法

class Person{
    public String name;
    public Person(){}
    public String getName() {return name;}
    public void setName(String name) {
        this.name = name;
        this.function();   //看这里
    }
    public void function(){
        System.out.println(name+" 你看看我 ");
    }
}
public class 实例化 {
    public static void main(String[] args) {
        Person zhangSan = new Person();
        zhangSan.setName("zhangSan");
        zhangSan.function();
    }
}

         关于构造方法

默认初始化 

Date d = new Date(2021,6,9);

在程序层面只是简单的一条语句,在JVM层面需要做好多事情,下面简单介绍下:

  1. 检测对象对应的类是否加载了,如果没有加载则加载(涉及双亲委派模型等)
  2. 为对象分配内存空间
  3. 处理并发安全问题,如:多个线程同时申请对象,JVM要保证给对象分配的空间不冲突
  4. 初始化所分配的空间 : 对象空间被申请好之后,对象中包含的成员已经设置好了初始值。除了基本数据类型外,还有reference(默认值为null)
  5. 设置对象头信息
  6. 调用构造方法,给对象中各个成员赋值

就地初始化

在成员变量定义的时候就赋值。

成员变量和局部变量

成员变量:定义在方法外部,在类的内部的变量

局部变量:定义在方法内部

Java里面没有全局变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值