java学习积累——初探类和对象

目录

一、认识类和对象

1、类的了解

2、定义方式

3、类图的使用

4、类和对象的关系

二、成员变量和成员方法

1、成员变量

2、成员方法

3、成员变量与局部变量

4、this关键字

三、构造方法

1、概念

2、语法


一、认识类和对象

1、类的了解

我们在生活中多会将有相同特征或相同行为的事物归为一类,在Java中,用来描述这类事物的就是Java类,Java类就是这样诞生的。Java是一门以类为组织单元的语言,我们定义的Java类就是一种Java数据类型,该数据类型属于引用数据类型。

2、定义方式

语法

public class 类名 {

    //添加内容

}

示例

//车的类
public class Car{

}

接下来填充车类的内容,如:价格、品牌、型号

public class Car {
    public double price;//价格
    public String brand;//品牌
    public String type;//型号
}

当描述行为时,在Java中,使用方法来描述行为,方法的定义语法如下:

// [ ]里的内容可写可不写

访问修饰符  返回值类型  方法名( [参数列表] ) {

        [return 返回值;]

}

那么Car类的部分定义如下:
 

public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("车启动");
    }
    public void speed(){
        System.out.println("车加速");
    }
    public void end(){
        System.out.println("车停止");
    }
}

3、类图的使用

类图用于描述类的结构,与流程图一样,简单易理解。

public修饰的属性和方法前需要使用"+";private修饰的属性和方法前需要使用"-"。

例图展示

4、类和对象的关系

解释:类是描述多个事物共有特征和行为的一种抽象体,而对象是一个具体的事物,每一个属性和每一个行为都是具体的,类是对象的集合体,类是用来构建具体的对象的。

语法

类名  对象名 = new 类名( );

对象名.属性名 = 属性值;

样例

public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("车启动");
    }
    public void speed(){
        System.out.println("车加速");
    }
    public void end(){
        System.out.println("车停止");
    }
}

public class Cars {
    public static void main(String[] args) {
        Car p1 = new Car();
        //这里的p1称为对象名,跟数组名一样,本质都是变量,只是在面向对象中称之位对象名

        p1.price=45623;
        p1.brand="宝马";
        p1.type="RX-18";
    }
}

类既然是一类事物的共同特征和行为的描述,那么一个类应该可以描述多个事物,因此类也可以创建多个对象,样例如下:

public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("车启动");
    }
    public void speed(){
        System.out.println("车加速");
    }
    public void end(){
        System.out.println("车停止");
    }
}

public class Cars {
    public static void main(String[] args) {
        Car p1 = new Car();
        //这里的p1称为对象名,跟数组名一样,本质都是变量,只是在面向对象中称之位对象名

        p1.price=45623;
        p1.brand="宝马";
        p1.type="RX-18";

        Car p2 = new Car();
        p2.price=48622;
        p2.brand="奥迪";
        p2.type="TX-53";

        Car p3 = new Car();
        p3.price=46553;
        p3.brand="奔驰";
        p3.type="OX-21";
    }
}

结论

类是对多个事物的抽象描述,描述的是它们的共同特征和行为。但要注意的是:类中描述的共同特征,在对象创建出来后是跟随对象走的,行为也是一样的,属于对象。

二、成员变量和成员方法

1、成员变量

解释:在类中定义的变量就是成员变量,成员变量是属于成员(具体的对象、具体的事物)的,成员变量是有初始值的。

补充:引用数据类型的初始值是 null,整数都是0,浮点数都是0.0,boolean类型是false,char类型是"\u0000"。

访问成员变量的语法

对象名.属性名;

例子

public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("车启动");
    }
    public void speed(){
        System.out.println("车加速");
    }
    public void end(){
        System.out.println("车停止");
    }
}

public class Cars {
    public static void main(String[] args) {
        Car p1 = new Car();
        //这里的p1称为对象名,跟数组名一样,本质都是变量,只是在面向对象中称之位对象名

        System.out.println(p1.brand+"\t"+p1.type+"\t"+p1.price);
        p1.price=45623;
        p1.brand="宝马";
        p1.type="RX-18";
        System.out.println(p1.brand+"\t"+p1.type+"\t"+p1.price);

        Car p2 = new Car();
        p2.price=48622;
        p2.brand="奥迪";
        p2.type="TX-53";
        System.out.println(p2.brand+"\t"+p2.type+"\t"+p2.price);

        Car p3 = new Car();
        p3.price=46553;
        p3.brand="奔驰";
        p3.type="OX-21";
        System.out.println(p3.brand+"\t"+p3.type+"\t"+p3.price);
    }
}

输出结果

2、成员方法

解释:在类中定义的方法就是成员方法,成员方法是属于成员(具体的对象、具体的事物)的。

语法

//  [ ]中内容可写可不写

对象名.方法名 ( [参数列表] );

例子

public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("价值"+price+"的"+brand+"车启动!"+"型号为"+type);
    }
    public void speed(){
        System.out.println("价值"+price+"的"+brand+"车加速!"+"型号为"+type);
    }
    public void end(){
        System.out.println("价值"+price+"的"+brand+"车停止!"+"型号为"+type);
    }
}

public class Cars {
    public static void main(String[] args) {
        Car p1 = new Car();
        //这里的p1称为对象名,跟数组名一样,本质都是变量,只是在面向对象中称之位对象名

        //System.out.println(p1.brand+"\t"+p1.type+"\t"+p1.price);
        p1.price=45623;
        p1.brand="宝马";
        p1.type="RX-18";
        System.out.println(p1.brand+"\t"+p1.type+"\t"+p1.price);
        p1.start();p1.speed();p1.end();

        Car p2 = new Car();
        p2.price=48622;
        p2.brand="奥迪";
        p2.type="TX-53";
        System.out.println(p2.brand+"\t"+p2.type+"\t"+p2.price);
        p2.start();p2.speed();p2.end();

        Car p3 = new Car();
        p3.price=46553;
        p3.brand="奔驰";
        p3.type="OX-21";
        System.out.println(p3.brand+"\t"+p3.type+"\t"+p3.price);
        p3.start();p3.speed();p3.end();
    }
}
public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("价值"+price+"的"+brand+"车启动!"+"型号为"+type);
    }
    public void speed(){
        System.out.println("价值"+price+"的"+brand+"车加速!"+"型号为"+type);
    }
    public void end(){
        System.out.println("价值"+price+"的"+brand+"车停止!"+"型号为"+type);
    }
    public void show(){
        System.out.println(brand+"\t"+type+"\t"+price);
    }
}

public class Cars {
    public static void main(String[] args) {
        Car p1 = new Car();
        //这里的p1称为对象名,跟数组名一样,本质都是变量,只是在面向对象中称之位对象名

        //System.out.println(p1.brand+"\t"+p1.type+"\t"+p1.price);
        p1.price=45623;
        p1.brand="宝马";
        p1.type="RX-18";
        //System.out.println(p1.brand+"\t"+p1.type+"\t"+p1.price);
        //p1.start();p1.speed();p1.end();
        p1.show();

        Car p2 = new Car();
        p2.price=48622;
        p2.brand="奥迪";
        p2.type="TX-53";
        //System.out.println(p2.brand+"\t"+p2.type+"\t"+p2.price);
        //p2.start();p2.speed();p2.end();
        p2.show();

        Car p3 = new Car();
        p3.price=46553;
        p3.brand="奔驰";
        p3.type="OX-21";
        //System.out.println(p3.brand+"\t"+p3.type+"\t"+p3.price);
        //p3.start();p3.speed();p3.end();
        p3.show();
    }
}

3、成员变量与局部变量

解释:局部变量就是在方法内部定义的变量,局部变量没有初始值,因此局部变量在使用前必须完成初始化操作,当局部变量与成员变量同名时,局部变量的优先级更高,并且局部变量的作用范围较小,就在局部变量所定义的方法内,因此局部变量在方法内的优先级高于成员变量。

例子

  public void show(){
        String brand; //无初始值,定义的局部变量brand不可使用
        System.out.println(brand+"\t"+type+"\t"+price);
    }

   public void show(){
        String brand="保时捷"; //现在使用的是局部变量的brand
        System.out.println(brand+"\t"+type+"\t"+price);
    }

4、this关键字

在方法中,如果局部变和成员变量的变量名相同,又要使用的是成员变量,那么这时要用到this关键字来解决问题,并且this还可以用来调用成员的方法。

this关键字表示的是当前对象(使用new创建出来的对象)

例子

public class Car {
    public double price;
    public String brand;
    public String type;

    public void start(){
        System.out.println("价值"+price+"的"+brand+"车启动!"+"型号为"+type);
    }
    public void speed(){
        System.out.println("价值"+price+"的"+brand+"车加速!"+"型号为"+type);
    }
    public void end(){
        System.out.println("价值"+price+"的"+brand+"车停止!"+"型号为"+type);
    }
    public void show(){
        String brand="保时捷"; //现在定义的是局部变量的brand
        System.out.println(this.brand+"\t"+type+"\t"+price); //现在使用的brand是成员变量
        start();//相当于this.start();
        speed();//相当于this.speed();
    }
}

三、构造方法

1、概念

构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作,构造方法不能被对象调用。

2、语法

//  [ ]中内容可写可不写

访问修饰符  类名  ( [参数列表] ) {

 

}

例子

public class Car {
    public double price;
    public String brand;
    public String type;

    public Car(){
        price=165;
        brand="TR";
        type="DX";
    }
    public void start(){
        System.out.println("价值"+price+"的"+brand+"车启动!"+"型号为"+type);
    }
    public void speed(){
        System.out.println("价值"+price+"的"+brand+"车加速!"+"型号为"+type);
    }
    public void end(){
        System.out.println("价值"+price+"的"+brand+"车停止!"+"型号为"+type);
    }
    public void show(){
        System.out.println(this.brand+"\t"+type+"\t"+price);
    }
}

public class Cars {
    public static void main(String[] args) {
        Car p1 = new Car();
        //这里的p1称为对象名,跟数组名一样,本质都是变量,只是在面向对象中称之位对象名

        p1.show();
        p1.price=45623;
        p1.brand="宝马";
        p1.type="RX-18";
        p1.show();
    }
}

运行结果

官方说明:你不必为类提供任何构造方法,但是在执行此操作时必须小心,编译器会自动为任何没有构造方法的类提供无参数的默认构造方法。

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值