Java中的类和对象

19 篇文章 1 订阅

目录

一、类与对象的初步认识

1.1类与对象

1.2类的定义:

1.3类的实例化:

二、类的成员

2.1 字段/属性/成员变量

2.2 static关键字(与对象无关!)

2.2.1 修饰属性

2.2.2 修饰方法

2.2.3 代码块

2.2.4修饰类

2.2.5 注意事项

三、封装

3.1 public和private

3.2 getter和setter

四、构造方法

4.1 构造方法

4.2 this关键字

五、认识代码块

5.1 构造代码块

5.2 静态代码块

六、匿名对象


一、类与对象的初步认识

1.1类与对象

类:只是一个模型一样的东西,规定了该类所具备的属性和行为。

对象:类的一个实例。

1.2类的定义:

class 类名称{
      属性(成员变量、字段)
      行为/方法(成员方法、实例方法)
      其他类/接口
}

注意事项:

  • 类名称使用大驼峰命名法,从第一个单词开始首字母大写,多个单词都是首字母大写。
  • 一个源文件*.java必须与该文件中的主类同名(public class),源文件中主类有且只有一个。
  • 一个源文件可以存在n个普通类,直接使用class声明的类,不加public。

1.3类的实例化:

class Person{
    public int age; //成员属性
    public String name;
    public String sex;
    public void eat(){ //成员方法
        System.out.println("吃饭!");
    }
    public void sleep(){
        System.out.println("睡觉!");
    }
}
public class Test {
    public static void main(String[] args) {
        Person person=new Person(); //通过new实例化对象
        person.eat(); //成员方法调用需要通过对象的引用调用
        person.sleep();
        //产生对象  实例化对象
        Person person1=new Person();
        Person person2=new Person();
    }
}
//结果如下
//吃饭!
//睡觉!

注意事项:

  • new关键字用于创建一个对象的实例。
  • 使用 . 来访问对象中的属性和方法。
  • 同一个类可以创建多个实例。

二、类的成员

2.1 字段/属性/成员变量

定义:在类中,但是方法外部的变量。

注意事项:

  • 使用 . 访问对象的字段
  • 对于一个对象的字段如果没有显式设置初始值,那么会被设置一个默认的初值
  • 对于各种数字类型,默认值为0
  • 对于boolean类型和引用类型,默认值为null

关于null:

null在Java中为“空引用”,表示不引用任何对象。

2.2 static关键字(与对象无关!

2.2.1 修饰属性

static属性:在JVM方法区保存,静态属性,表示类属性,该类的所有对象共享该属性,直接通过类名称访问,访问方式:类名称.属性。

  • 类中常量:static final 此时常量全局唯一且不能修改,所有对象共享此常量。

例如:

class TestDemo{
    public int a;
    public static int count;
}
public class Test {
    public static void main(String[] args) {
        TestDemo t1=new TestDemo();
        t1.a++;
        TestDemo.count++;
        System.out.println(t1.a);
        System.out.println(TestDemo.count);
        System.out.println("------------");
        TestDemo t2=new TestDemo();
        t2.a++;
        TestDemo.count++;
        System.out.println(t2.a);
        System.out.println(TestDemo.count);
    }
}
//结果如下
//1
//1
//------------
//1
//2

2.2.2 修饰方法

static方法:静态方法,直接通过类名称调用,无需产生该类的对象

  • 静态方法属于类,而不属于类的对象
  • 可以直接调用静态方法,而无需创建类的实例
  • 静态方法可以访问静态数据成员,并可以更改静态数据成员的值

例如:

class TestDemo{
    public int a;
    public static int count;
    public static void change(){
        count=100;//访问静态数据成员,并且更改
    }
}
public class Test {
    public static void main(String[] args) {
        TestDemo.change();//无需创建实例对象,通过类名称调用
        System.out.println(TestDemo.count);
    }
}
//结果如下:
//100

2.2.3 代码块

static代码块:静态代码块,定义在类中,使用static修饰的代码块,当类加载时执行一次,与对象产生无关。(类加载:就是把需要使用的类加载到JVM中)

例如:

static{
   //只能访问静态数据成员
}

注意事项:

  • 静态代码块不管产生多少个对象,其只会执行一次,且是最先执行的
  • 静态代码块执行完毕后,构造代码块执行,再然后是构造函数执行

2.2.4修饰类

.......略.......

2.2.5 注意事项

  • static家族中可以互相调用——都不依赖于对象
  • 静态方法不能访问类中成员变量
  • 静态方法能访问类中静态变量
  • 成员方法能访问静态变量
  • 成员方法能访问成员变量

三、封装

3.1 public和private

阿里编程规约:类中如无特殊说明,所有成员变量统一使用private封装(99%)。

public:被public修饰的成员变量或成员方法,可以直接被类的调用者使用。

private:当一个属性被private修饰时,该属性只在类的内部可见,出了该类就无法使用,不能被类的调用者使用。

范例:使用private封装属性,并提供public方法供类的调用者使用

class Person{
    private String name="张三";
    private int age=18;
    public void show(){
        System.out.println("name:"+name+",age:"+age);
    }
}
public class Test{
    public static void main(String[] args) {
        Person person=new Person();
        person.show();
    }
}
//结果如下
//name:张三,age:18

3.2 getter和setter

如果要修改或获取private属性,就需要使用getter/setter方法。

范例:

class Person{
    private String name="张三";
    private int age=18;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void show(){
        System.out.println("name:"+name+",age:"+age);
    }
}
public class Test{
    public static void main(String[] args) {
        Person person=new Person();
        person.setName("李四");
        String name=person.getName();
        System.out.println(name);
        person.show();
    }
}
//结果如下
//李四
//name:李四,age:18
  • 在IDEA中可以使用alt+insert快速生成setter/getter方法

四、构造方法

4.1 构造方法

构造方法:是类的特殊方法,是执行对象的初始化操作。

语法规则:

  • 方法名称必须与类名称相同
  • 构造方法没有返回值类型声明
  • 每一个类中一定至少存在一个构造方法

定义:

访问修饰符(public/private) 类名称(){

}

注意事项:

  • 当类中没有显示声明构造方法时,JVM会生成一个默认的无参构造,当类中显示提供了构造方法,JVM将不会再生成默认的无参构造
  • 初始化(类中成员属性赋值)
  • 构造方法的重载:这些重载的构造方法只有参数个数不一样(构造方法就是给类中的属性赋值,类中属性的类型在定义时就规定好了),按照构造方法参数个数升序排列
  • 构造方法的互相调用:使用 this(参数); 必须放在该方法的第一行调用,并且调用不能成“环”,不能递归调用

注意:当一个类构造方法被private,表示不希望通过外部产生对象,而由类本身向外提供对象,外部只能使用不能创建。例如:星期类

4.2 this关键字

  • this修饰属性表示直接从本类中寻找属性(this.)
  • this修饰方法,表示调用方法(调用本类中普通方法:this.方法名称();    调用本类中的构造方法:this(参数);)
  • this表示当前对象引用(当前调用的成员方法或变量是通过对象A调用的,则此时this就是A)

五、认识代码块

代码块:使用{}定义的一段代码

5.1 构造代码块

定义:定义在类中的代码块(不加修饰符),也叫实例代码块

例如:

class Person{
    private String name;
    private int age;
    private String sex;
    public Person(){
        System.out.println("I am Person init()!");
    }
    //构造代码块
    {
        this.name="bit";
        this.age=12;
        this.sex="man";
        System.out.println("I am instance init()!");
    }
    public void show(){
        System.out.println("name:"+name+" age:"+age+" sex:"+sex);
    }

注意:当产生对象时执行构造代码块,优先于构造方法执行,有几个对象产生,构造代码块就执行几次。

5.2 静态代码块

2.2.3已经讲解,这里不再赘述......

六、匿名对象

匿名对象:一个对象没有任何引用指向

注意事项:

  • 匿名对象只能在创建对象时使用
  • 如果一个对象只是用一次,后面就不需要用了,可以考虑使用匿名对象
  • Java没有析构函数,当一个对象没有任何引用指向,该对象就会被标记为垃圾对象,由JVM自主释放空间,若一个对象有引用指向,无论内存是否够用,都不会释放该空间
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怎样让大排不硬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值