Java学习日记-1

文章介绍了Java中的类和对象,包括类作为抽象概念描述事物的属性和行为,对象作为类的实例存在于内存中。详细讲解了构造方法的使用,包括构造方法的重载和构造代码块的执行时机。此外,还讨论了静态资源的特性以及封装在数据访问中的作用。
摘要由CSDN通过智能技术生成

类与对象

  • 类:class 类别的概念

    • 用代码来描述一类事物
    • 相同或者相似的属性、特征、行为、功能
  • 对象:Object 具体的事物

    • 代码中的对象实际上是不存在的,只有创建对象的代码
    • 对象是存在进程中的内存中的 是内存中的一份数据体
  • 类的定义:

    • 语法: class 类名{ }
    • 内容: 用户类(用户名 密码 年龄 在线标识 | 查看信息 验证密码 登录 登出 等… )
      • 对象成员相关:
        • 属性:这类事物数据信息
          • 变量: 数据类型 数据变量名;
          • 常量: final 数据类型 数据变量名=值;
        • 方法:这类事物的行为/功能逻辑
        • 初始化构造部分: 创建对象时 初始化执行的
          • 构造方法:
            • 格式: 修饰符 类名(){ }
              1. 每个类都有一个空参数的隐式构造方法
              1. 如果显式的写了构造方法,不管有无参数都会覆盖隐式的构造方法
              1. 构造方法可以实现重载 方法重载(同一个类中可以存在多个同名的方法,参数不一致)
              1. 在创建对象时调用,通过传入不同的参数选择不同构造方法执行
          • 构造代码块:
            • 格式: { }
            • 每次创建对象时都会执行构造代码块
      • 静态资源部分:static 静态的 特性:唯一
        • 属性: 在内存中只会创建一份,不管创建多少个对象,都是共享的 可以由类名直接调用
        • 方法: 类名直接调用 ,方法中不能使用本类的对象成员
        • 代码块:static{ }
          • 类被加载时调用 且只会调用一次
package com.oop1.zyf0702;

public class User{

	// 对象成员部分:
	String name;
	int age;
	final int id;// 每个对象的常量,要求初始化赋值或者在对象构造区域赋值(代码块赋值/或者所有的构造方法中赋值)

	{
//		id = 1;
	}
	// 构造方法
	public User(){
		id = 1;
		System.out.println ("User()");
	}

	public User(String name,int id){
		this.id=id;
		this.name = name;
		System.out.println ("User(String name)");
	}

	// 构造代码块 用于初始化对象 不管调用哪个构造方法都会执行
	{
		System.out.println ("构造代码块");
	}

	public void setName(String name){
		this.name = name;
	}

	public String getName(){
		return name;
	}

	// 静态资源部份:
	static int num;
	static final int MIN_AGE = 0;// 静态常量 表示固定不变的数据

	static{
		System.out.println ("num:" + num);
		System.out.println (MIN_AGE);
		System.out.println ("静态代码块");
	}

	public static void staticMethod(){
		System.out.println ("num:" + num);

		System.out.println ("staticMethod()");
	}

	public static void main(String[] args){
		System.out.println (num++);
		System.out.println (User.num++);
		User.staticMethod ();

		User user1 = new User ();
		User user2 = new User ("张三",2);
		user1.setName ("李四");
		System.out.println (user1.getName ());
		System.out.println (user2.getName ());
		System.out.println (user1.id);
		System.out.println (user2.id);
//		user1.id=100;
	}
}

封装

  • 访问权限修饰符: 在程序运行中不受限制的 作用于编译阶段

    • public 公共的
    • protected 受保护
    • package-default 缺省不写
    • private 私有的
  • 1: 使用受限制的修饰符修饰属性和方法 private int age;

  • 2: 提供一系列的不受限制的访问方法来操作

      1. 实现数据赋值前的验证操作,保证参数赋值给属性的合法性
      1. 实现获取数据时,对数据的处理操作,保证数据的安全性与功能性
      1. 实现了读写分离,数据变量隔离,只能操作数据不能操作属性变量
private long time;
// long整数存储的是  1970年1月1日0时0分0秒到现在的毫秒数 

public void setAge(int age){
  if(age<MINAGE){
    this.age=MINAGE;
  }
  this.age=age;
}

public int getAge(){
  return age;
}

public long getTime(){
  return time;
}

public String getTime(){
  // 将 time 转成 年月日时分秒的格式 输出 
  return time;
}
  • 构造方法也有访问权限修饰符,那我将构造方法私有化呢?
    • 限制这个类不能随便创建对象,保证一个类只有固定的对象,不能由类的使用者随意来创建——单例模式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值