JAVA入门06——类、对象、封装、构造方法

本文围绕Java的类和对象、封装展开。介绍了类是属性和行为集合,对象是类的实例,还阐述了局部变量和成员变量区别。在封装方面,讲解了用private修饰成员变量,通过Getter/Setter方法间接访问,以及this关键字、构造方法和JavaBean规范。

类和对象

  • 类是一组相关属性和行为的集合,可以看成是一类事物的模板
  • 对象是一个类的实例,是一类事物的具体表现

定义一个简单的学生类

public class Student {
	String name;	// 成员变量(属性)
	int[] age;
	
	public void eat() {		// 成员方法(行为)
		System.out.println("吃饭");
	}
}

类的实例化(创建对象)

  • 导包:import 包名称.类名称
  • 创建格式:类名称 对象名 = new 类名称();
  • 使用:对象名.成员变量
       对象名.成员方法()
import demo.Student

public static void main(String[] args) {
	Student stu = new Student();
	stu.name = "ZZZ";
	stu.age = 18;
	stu.eat(); // 吃饭
}

局部变量和成员变量的区别

  • 位置不同:
      成员变量:在方法外
      局部变量:在方法内或者方法声明上(形式参数)
  • 作用范围不同:
      成员变量:整个类
      局部变量:方法中
  • 初始化值不同:
      成员变量:有默认值;
      局部变量:没有默认值,必须先定义、赋值才可以使用
  • 在内存中的位置不同:
      成员变量:堆内存
      局部变量:栈内存
  • 生命周期不同:
      成员变量:随着对象的创建而存在,随着对象被垃圾清除而消失
      局部变量:随着方法的调用而存在,随着方法的调用结束而消失

封装

  • 将属性隐藏起来,若要访问某个属性,提供公共方法对其访问

使用private关键字修饰成员变量(私有化)

  • 一旦使用了private进行修饰,那么本类当中仍然可以随意访问
    但是超出了本类范围之外就不能再直接访问了

  • 间接访问private成员变量,就是定义一对Getter/Setter方法
    必须是setXxx/getXxx命名规则

  • 对于Getter来说,不能有参数,返回值类型与成员变量对应
    对于Setter来说,不能有返回值,参数类型和成员变量对应

public class Person {

    String name;
    private int age;

    public void show() {
        System.out.println("我叫" + name + ",年龄" + age);
    }

    public void setAge(int num) {
        if (num < 0 || num > 130) {
            System.out.println("数据不合理");
        } else {
            age = num;
        }

    }

    public int getAge() {
        return age;
    }
}
  • 外部访问时:
public static void main(String[] args) {
    Person person = new Person();

//    person.age = 18; // 不能直接访问成员变量
    person.setAge(20);
	person.setName("ZZZ");
    person.show();
}

封装的优化-this

  • 当方法的局部变量和成员变量名称相同时,又想访问成员变量则需要使用this关键字
public class Student {
	private String name;
	private int age;
	
	public void setName(String name) {
		//name = name;
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		//age = age;
		this.age = age;
	}
	public int getAge() {
		return age;
	}
}

构造方法

  • 当一个对象被创建时,构造方法用来初始化该对象
  • 无论是否自定义了构造方法,Java都会自动创建一个无参数构造方法
  • 格式:
      修饰符 构造方法名(参数列表) {
       方法体;
      }
  • 构造方法名称和类名称一致
  • 不需要返回值类型,也不需要return返回值
  • 构造方法可以重载、
public class Student {

    private String name;
    private int age;
	
	public Student() {
        System.out.println("无参构造方法执行");
    }
    
    public Student(String name, int age) {
        this.age = age;
        this.name = name;
        System.out.println("全参构造方法执行");
    }
}

定义一个JavaBean(Java编写类的一种标准规范)

  • JavaBean要求类必须是具体的和公共的,并且具有无参数构造方法(建议一起写上有参数构造方法),Setter/Getter方法
public class Student {
	//成员变量
	private String name;
	private int age;
	
	//构造方法
	public Student() {
	}
	
	public Student(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	//成员方法
	publicvoid setName(String name) {
		this.name = name;
	}
	
	public String getName() {
		return name;
	}
	
	publicvoid setAge(int age) {
		this.age = age;
	}
	
	publicint getAge() {
		return age;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值