JAVA的类和对象

一、什么是类和对象

  • 类: 是具有共同属性和行为的实体的集合,是生成对象的模板。在生活中我们把具有相同属性和行为的事物归为一类,如我们把大雁、天鹅、麻雀等统称为鸟类。鸟类的共同属性是有羽毛,行为是能飞行。
  • 对象: 是类的实例,如鸟类的具体实例可以是一只麻雀,一只天鹅。此时属性和行为就有了具体的意义,如大雁羽毛是灰色的,能排人字型飞行。
  • 总之类是抽象的集合,是生成对象的模板,对象是类的具体实例。

二、成员变量和成员方法(函数)

  • 成员变量是类对象的属性,成员方法是类对象的行为。
  • 创建类的语法格式如下:
class 类名称{
	成员变量类型 成员变量名称;
	成员方法;
}
  • 成员方法定义语法格式如下:
访问权限修饰符 返回值类型 方法名(参数类型 参数名){
	方法体;
	return 返回值;
}
  • 如下面定义一个Person类。
//定义一个Person类
class Person{
    String name;   //属性:姓名
    int height;    //属性:身高

    //方法:休息
    public void rest(){
        System.out.println(this.name + "休息一会儿!");
    }
    //方法:跑步
    public void run(){
        System.out.println(this.name + "正在跑步……");
    }
}
  • 访问权限修饰符有:public、protected、private和默认的包访问权限
修饰符同一个类同一个包中子类所有类
private
default
protected
public
  • private表示私有,只有自己类能访问
  • default表示没有修饰符修饰,只有同一个包的类能访问
  • protected表示可以被同一个包的类以及其他包中的子类访问
  • public表示公有的,可以被该项目的所有包中的所有类访问

三、this关键字

this关键字表示本类对象的引用,即本类对象指自己。如给成员变量赋值时可写:

//this表示本类person对象自己
this.name = name;

this关键字也可作为返回值:

return this;

四、构造方法

  • 在类中,除了成员方法外,还有一种特殊的方法,它与 类名同名,这类特殊的方法就叫构造函数。创建对象时会自动构造函数完成对象的初始化。
  • 构造方法特点:
  • 1、构造方法没有返回值,也不用写void;
  • 2、构造方法名称要与类的名称相一致
  • 3、构造方法可以被重载

以上面Person类为例,构造函数如下:

//构造方法1:
public Person() {
}
//构造方法2:
public Person(String name, int height) {
    this.name = name;
    this.height = height;
}
  • 构造方法常用来初始化成员变量;
  • 当类中没有构造方法时,创建对象时系统会自动创建如构造方法1的无参构造方法;
  • 如果创建了有参构造方法,系统将不会自动创建无参构造方法,这时如果试图用无参构造方法创建一个对象,编译器将会报错。

五、静态变量和静态方法

  • 使用static关键字修饰的变和方法,就叫静态变量和静态方法。
  • 静态变量和静态方法它不属于对象,在内存中只有一份数据,所有对象共用此一份数据。
  • 普通方法内的局部变量不能使用static关键字。
  • 静态方法不能调用非静态变量。
  • 静态方法中不能使用this关键字,因为静态方法不属于对象,它属于类,而this是对当前对象的引用,因此静态方法中不能使用this关键字。
  • 构造函数中可以使用this引用静态变量
  • main方法(主方法)必须为静态方法。因为主方法是程序入口方法,此时还没有对象,如果主方法是一个普通成员方法,必须创建对象后才能调用,这是矛盾的。
  • 使用静态变量和静态方法,无需创建对象,可以通过类名直接调用,格式如下:
类名.静态变量名
类名.静态方法名

Static关键字示例:

public class StaticClass_Person {
    //主方法必须为静态方法
    public static void main(String[] args) {
        StaticClass_Person s = new StaticClass_Person("李强", 21, 175);
        StaticClass_Person.show_info(); //可以使用类名直接调用静态方法
    }

    //构造函数中可以使用static关键字引用静态变量
    public StaticClass_Person(String name, int age, double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    //静态成员变量
    static String name;
    static int age;
    static double height;
    //普通成员变量
    String address;

    //静态方法,只能引用静态变量,它不能引用address变量
    public static void show_info(){
    	//static String work;  //试图在在静态方法static的局部变量,会报错
        System.out.println(name+",今年"+age+"岁了,身高"+height+"厘米。");
    }
}

运行结果:

李强,今年21岁了,身高175.0厘米。

六、对象的创建和使用

  • 一旦类建好了,我们就可以用这个类模板来新建对象了,语法格式如下:
//创建类的对象
类名 类变量名 = new 类名();
类名 类变量名 = new 类名(构造参数1,构造参数2, ……);
//引用成员变量
类变量名.成员变量;
//调用成员方法
类变量名.成员方法名();
  • 完整示例:
//定义一个Person类
public class Person {
    public static void main(String[] args) {
        Person p = new Person();  //创建类的对象p
        p.name = "李强";  //给成员变量赋值
        p.run();  //调用成员方法
        p.rest();  //调用成员方法
    }
    String name;   //属性:姓名
    int height;    //属性:身高
    //构造方法1:
    public Person() {

    }
    //构造方法2:
    public Person(String name, int height) {
        this.name = name;
        this.height = height;
    }

    //方法:休息
    public void rest() {
        System.out.println(this.name + "休息一会儿!");
    }

    //方法:跑步
    public void run() {
        System.out.println(this.name + "正在跑步……");
    }
}
  • 运行结果:
李强正在跑步……
李强休息一会儿!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值