JavaSE修炼手册(01)--类和对象

1.0 类定义和使用

在Java中定义类时需要用到class关键字

//创建类
class ClassName{ //类名 -->> 大驼峰
    field;  //字段(属性) 或者 成员变量
    method;  //成员方法
}

 public修饰的类必须要和文件名相同

2.0 类的实例化

2.1 什么是实例化

用类类型创建对象的过程,称为类的实例化,在Java中用new关键字配合类名来实例化对象

class PetDog {
    public String name;
    public String color;
    public void barks() {
        System.out.println("汪汪汪~~~");
    }

    public void wag() {
        System.out.println("摇尾巴~~~");
    }
}

public class Main{
    public static void main(String[] args) {
        PetDog dogh = new PetDog(); //通过new实例化对象

        //如何访问 name color 对象的属性!!!

        dogh.name = "大黄";
        dogh.color = "黑黄"; 

//通过对象的引用 来访问对象的属性!!!
}

每次 new 一个对象都会开辟一块内存

3.0 this引用

3.1 为什么要用this引用(this 的作用)

  1. 当前对象的引用:当一个类的实例化对象用自己的成员方法时,可以使用 this 关键字来引用当前对象。比如在类的方法中需要访问当前对象的成员变量或调用其他方法时,可以使用 this 关键字来明确指代当前对象。
  2. 解决变量名冲突:当方法的参数名和成员变量相同时,使用 this 可以区分成员变量和参数变量。(如果没用this ,则参数名和成员变量同名时,会造成局部变量 (形参变量) 优先 )。
  3. 调用构造方法:在一个构造方法中,可以使用 this 关键字调用同类的其他构造方法,这样可以避免重复代码,并且方便构造方法的重载使用。

提示:this 关键字只能在非静态的成员方法和构造方法中使用,不能再静态方法中使用,因为静态方法属于类级别,没有当前对象的引用。

通过 this 可以访问当前对象的成员属性/成员变量【静态的成员变量不支持!!!】

3.2 什么时 this引用

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

(注意:this引用的是调用成员方法的对象。

3.3 this引用的特性

  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在" 成员方法 " 中使用
  3. 在" 成员方法 "中,this只能应用当前对象,不能再引用其他对象
  4. this是" 成员方法 "第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收,例如:
    public class Date {
        public int year;
        public int month;
        public int day;
        
        public void setDate(Date this,int y,int m, int d){
            this.year = y;
            this.month = m;
            this.day = d;
        }
        
        public void printDate(Date this){
            System.out.println(this.year + "-" + this.month + "-" + this.day);
        }
    
        public static void main(String[] args) {
            Date d = new Date();
            d.setDate(2024,4,4);
            d.printDate();
        }
    
    }

    编译器编译之后将" 成员方法 "的隐藏的this参数还原,在方法中所有" 成员变量 "都通过this引用来访问

4.0 对象的构造及初始化

4.1 如何初始化对象

通过之前的学习可知,在Java方法内部定义一个局部变量是,必须要初始化,否则会编译失败。

public static void main(String[] args){
    int a;
    System.out.println(a);
}


// Error:(26,28)java:可能尚未初始化变量a

上述代码为局部变量的初始化,如果是对象:

public static void main(String[] args){
    Data d = new Date();
    d.printDate();
    d.setDate(2024,4,4);
    d.printDate();
}

//代码可以正常通过编译

注意!当成员变量 没有被初始化的时候,引用类型 一般默认为null ,基本类型默认是自己的0值

(int -> 0)( float -->> 0.0f ) ( char -->> '\u000' )( boolean -->> flace )

4.2 构造方法

4.2.1 概念

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

4.2.2 特征

  1. 名字必须与类名相同
  2. 没有返回值类型,设置为void也不行
  3. 一般情况下使用public修饰
  4. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
  5. 构造方法之间 是可以构成方法的重载
  6. 如果用户没有显示定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的
public class Date{
    public int year;
    public int month;
    public int day;

//无参构造方法
    public Date(){
        this.year = 1900;
        this.month = 1;
        this.day = 1;
    }


//带有三个参数的构造方法
public Date(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
}

上述两个构造方法构成了方法重载  >>>  (方法的重载:方法名相同,参数列表不同)

注意!构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。

完成一个对象的构造,分两步:

1:分配内存

2:调用合适的构造方法

        7.  构造方法中,可以通过 this 调用其他构造方法来简化代码

public class Date{
    public int year;
    public int month;
    public int day;

//无参构造方法
    public Date(){
        this(1900,1,1);

        //this.year = 1900;
        //this.month = 1;
        //this.day = 1;
    }

}

this(1900,1,1);      ---->>>   this();调用当前类当中的其他构造方法!!只能在当前的构造方法内部来使用!!!且 只能在第一行!!!!

this本身代表的是当前对象的引用!!!

this.data   //访问当前对象的属性

this.func();  //调用当前对象的方法!》》 不一定要在第一行。

.func(); //调用其他普通的成员方法 

4.3 默认初始化

4.4 就地初始化

  • 39
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
面向对象编程是一种编程范式,它将程序的构建和设计思路以面向对象的方式进行组织和实现。在Java中,面向对象编程是基于Java SE(Standard Edition)的一种编程方式。第07讲主要介绍了面向对象编程中的一些基本概念和关键术语。 在面向对象编程中,我们将程序中的数据和对数据的操作(方法)封装在一起,形成一个对象。对象由两部分构成:属性和方法。属性是用来描述对象的特征,而方法则是对象可以执行的操作。对象之间通过消息(方法调用)进行通信和交互。面向对象的核心思想是通过封装、继承和多态实现程序的复用和扩展。 封装是面向对象编程中的一个重要概念,它指的是将类的属性和方法进行封装,使得外部无法直接访问和修改对象的内部状态,只能通过公共的方法来操作属性和执行方法。封装提供了一种将数据和行为组合在一起的方式,可以保护数据的完整性和安全性。 继承是面向对象编程中的另一个重要概念,它指的是通过定义一个新的类来继承现有类的属性和方法。通过继承,子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改。继承提供了一种代码复用的机制,可以减少重复编码的工作量。 多态是面向对象编程的又一个重要概念,它指的是同一类型的对象在不同的情况下可以有不同的表现形式。多态通过方法的重写和方法的重载实现。方法的重写指的是在子类中重新定义和实现父类的方法,方法的重载指的是在同一个类中可以定义多个同名但参数列表不同的方法。 总结来说,面向对象编程是一种将程序组织和设计思路以对象为中心的编程方式。在JavaSE中,我们可以通过封装、继承和多态来实现面向对象编程的目标。封装可以提高程序的可维护性和可复用性,继承可以减少重复编码的工作量,多态可以灵活地操作对象。掌握这些基本概念和关键术语,可以帮助我们更好地理解和应用面向对象编程的思想。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小林同学7319

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

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

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

打赏作者

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

抵扣说明:

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

余额充值