Java的类和对象(一)

面向对象的初步认识
什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情,用面向对象的思想来设计程序,更符合人们对事物的认识,对于大型程序的设计、扩展以及维护都非常友好。

面向对象与面向过程

面向对象:实体(对象)之间相互协作完成

面向过程:更注重过程

例如买电脑

面向对象:跟妈妈说要买电脑--->妈妈去买电脑--->使用

面向过程:查配置--->打开购物软件--->选电脑--->下单--->填地址--->取快递--->使用

类定义和使用

类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性,有哪些功能,描述完成后计算机就可以识别了。

类的定义格式

class  ClassName{

field;     //字段(属性或成员变量)

method;  //行为(成员变量)

}

class 是定义类的关键字ClassName为类的名字,{}中是类的主体。

类中包含的内容称为类的成员,属性主要是用来描述类的,称之为成员属性或者类成员变量。方法主要说明类具有哪些功能,称为类的成员方法。

例如:定义一个学生类

class Student{
    //学生的属性(成员变量)
    public String name;     //成员变量不初始化会给默认值null
    public String sex;
    public int age;
    public double score;
    //学生的行为(成员方法)
    public void AttendClass(){
        System.out.println(name+"按时上课");
    }
    public void Study(){
        System.out.println(name+"努力学习");
    }
    public void Exam(){
        System.out.println(name+"参加考试");
    }
}

注意:

1.类名注意采用大驼峰;

2.成员前写法统一为public;此处写的方法不带static关键字;

3.一般一个文件当中只定义一个类;

4.main方法所在的类一般要使用public修饰;public修饰的类必须和文件名相同;不要轻易修改public修饰的类的名称,如果要修改须通过开发工具修改

类的实例化
什么是实例化

定义了一个类,就相当于在计算机中定义了一种新的类型,与基本数据类型类似,只不过基本数据类型是Java语言自带的内置类型,而类是用户自定义的一个新的类型,有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)

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

    public static void main(String[] args) {
        //通过关键字new 实例化一个Student对象      对象其实就是一个实体
        //类是用户自定义的一种新的类型
        //可以通过这个新的类型去定义变量 --> 此时他的赋值需要new去实例化对象-->所以他是一个引用变量-->用来存对象的地址
        //一个类可以实例化多个对象
        Student student1 = new Student();
        student1.name ="张三";
        student1.age=18;
        student1.sex="man";
        student1.score=90;
        System.out.println(student1.name+" "+student1.age+" "+student1.sex+" "+student1.score);
        student1.Study();//在此之间已经对name赋值
        Student student2 = new Student();
        student2.Study();//在此之前未对name赋值
        student2.name ="李四";
        student2.age=18;
        student2.sex="woman";
        student2.score=90;
        System.out.println(student2.name+" "+student2.age+" "+student2.sex+" "+student2.score);
    }

注意:

1.new关键字用于创建一个对象的实例;

2.使用 . 来访问对象中的属性和方法

3.同一个类可以创建多个实例

类和对象的说明
  1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员。
  2. 类是一种自定义的类型,可以用来定义变量。
  3. 一个类可以实例化出多个对象,实例化出的对象,占用实际的物理空间,存储类成员变量。
  4. 类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。
class Person{
    public String name;
    public int age;

    public void eat(){
        System.out.println(name+"吃饭");
    }
    public void show(){
        System.out.println("姓名:"+name+"  年龄:"+age);
    }
}
    public static void main(String[] args) {
        //引用指向对象      也就是说变量存该对象的地址
        Person person1=new Person();
        //通过引用可以对name和age赋值
        System.out.println(person1.name);
        //此时并未对name赋值但不会报错 因为他属于成员变量,编译器会给他们默认值
        //如果是引用类型,那么默认值为null,Boolean默认值false,char默认值'\u0000'
        person1.name="张三";
        person1.age=18;
        System.out.println(person1.name);
        System.out.println(person1.age);
        person1.show();
    }
    public static void main(String[] args) {
        Person person = null;   //代表person不指向任何对象
        Person person1 = new Person();
        Person person2 = new Person();
        person1=person2;    //代表person1这个引用指向了person2这个引用指向的对象

    }
    public static void main(String[] args) {
        //此时并非是一个引用指向多个对象   最终person1直指向了最后一个对象,中间对象都被回收了
        Person person1 = new Person();
        person1 = new Person();
        person1 = new Person();
        person1 = new Person();

    }

注意:1.当一个引用赋值为null时代表这个引用不指向任何对象;2.引用不能指向引用;3.一个引用不能指向多个对象

This引用

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

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

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

    //每个成员方法第一个参数默认是this // public void setDate(DataUtil this,int y,int m,int d)
    public void setDate(int y,int m,int d){
        year=y;// 还可写成 this.year=y;  //加上this表示给当前的对象的属性赋值
        month=m; 
        day=d;
    }
    //public void show(DataUtil)
    public void show(){
        //这样也对--> System.out.println("年:"+year+" 月:"+month+" 日:"+day);
        System.out.println("年:"+this.year+" 月:"+this.month+" 日:"+this.day);
    }

    public static void main(String[] args) {
        DataUtil dataUtil = new DataUtil();
        dataUtil.setDate(2023,12,4);
        dataUtil.show();

        DataUtil dataUtil2 = new DataUtil();
        dataUtil2.setDate(2023,12,5);
        dataUtil2.show();

        DataUtil dataUtil3 = new DataUtil();
        dataUtil3.setDate(2023,12,6);
        dataUtil3.show();
    }
}
this引用的特性

1. this的类型:对应类类型引用,即那个对象调用就是那个对象的引用类型;

2. this只能在成员方法中使用;

3. 在成员方法中,this只能引用当前对象,不能再引用其他对象;

4. this是成员方法第一个隐藏的参数,编译器会自动传递,在方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收;

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半颗星辰、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值