JAVA类与对象

1 篇文章 0 订阅
1 篇文章 0 订阅

JAVA类与对象

类的定义

什么是对象?什么是类?

对象是指现实世界或者概念世界的任何事物,每一个具体的事物称为对象的实例
类是指具有相同结构特征的对象的结构抽象(软件工程中的官方术语)

关键字

class

类名

建议采用大驼峰的命名方式

属性

定义在类的内部,方法的外部

  1. 成员变量
    1. 静态成员变量
    2. 实例成员变量
  2. 方法
    1. 静态成员方法
    2. 实例成员方法
访问修饰限定符
  1. public(公开的)
  2. private(私有的)
  3. protected(受保护的)
  4. 默认(什么都不写)

类的实例化

采用new关键字

Persion persion0 = new Persion();
Persion persion1 = new Persion();
类和对象的关系

一个类可以实例化成多个对象

访问对象的成员变量和方法

当成员变量没有初始化的时候,那么这些值是对应的默认值(0/null/false)

  1. 对于public(不被static修饰的)的变量或方法可以使用 对象名.属性名/方法名
System.out.println(persion0.name);
persion0.show();
  1. 静态的成员变量和静态的成员方法(有static修饰)

通过 类名.属性名/方法名访问
所以一些地方成静态的变量或方法为类变量或类方法

内存的存储方式

静态成员变量不属于对象(内存不是开辟在栈上),在内存上位于方法区

重写toString方法

如果不重写,直接打印对象的实例,默认调用的是Object的toString方法
可以在类中重写toString方法,从而返回一个你需要的字符串

对成员变量的初始化

默认初始化

不进行赋值,采用变量的默认赋值

就地初始化

指在类中定义变量时直接赋给其初始值

class stu{
	String name = "xiaowei";
    ...
}
类外初始化

在创建对象后进行赋值(初始化)

//不推荐采用这种初始化方式,如:若方法内的变量名发生改变,外部会报错
Persion p1 = new Persion();
p1.name = "xiaowei";
p1.age = 19;

关于static关键字

修饰成员变量
  1. 访问形式:类名.变量名
  2. 内存存储方式:方法区
  3. 特点:静态的成员变量只有一份,不依赖于对象(在不同对象中修改别的地方的值也会随之修改)
修饰成员方法
  1. 访问形式:类名.方法名
  2. 特点:在静态方法内部,是不可以访问实例的成员变量的
修饰类
修饰代码块
封装

为了安全起见,成员变量筒通常采用private修饰,使用private修饰的成员变量或成员方法,不能直接访问,只能在类的内部进行访问和修改。
若要在类外访问需要采用在类内设置 get,set方法(idea可以自动生成)来进行实现

public void setName(String name){
	this.name = name;
    //如果没有this相当于把局部变量name赋值给局部变量name
    //this代表当前对象的 !引用!(注意引用两个字)
    //this不能访问static修饰的成员变量
}
public void getName(){
	return this.name;
}
关于this和static详情
  1. 静态方法内部不能用this密切不能访问非静态数据
  2. 普通方法的内部时可以访问静态数据的
  3. 不管当前的方法是静态的还是非静态的方法 内部都不可以定义静态变量。 原因:静态的变量是属于类的而不属于方法
封装的意义

对数据的安全性提升
对类的调用者更加方便

构造方法

作用

构造函数在创建对象时执行

实例化一个对象分为几步:
  1. 为对象分配内存空间
  2. 调用合适的构造方法(构造方法不只一个,可以被重写)
构造方法的写法
  1. 没有返回值
  2. 构造方法名和类名相同
  3. 构造方法可以重载,所以构造方法可以有多个
  4. 当我们一个构造方法都没写时,编译器会自动生成一个无参的构造方法,一旦你写了其他的构造方法,编译器将不再为你默认生成不带参数的构造方法

代码块

本地代码块(了解即可)
	public static void main(){
        {
        	//本地代码块
        }
    }
实例代码块(构造代码块)
class persion{
    persion(){
    	//构造方法
    }
    {
    	//实例代码块
    }  
}
静态代码块

静态代码块和实例代码块的作用

  1. 用于初始化一些数据
  2. 若有多个静态代码块/或实例代码块 则按照顺序执行
  3. 静态的不依赖对象,实例的成员需要对象才能被执行
class persion{
	static{
    	/*
        	静态代码块(不会依赖对象)
            执行顺序:
        		静态代码块先执行 -》实例代码块-》构造方法
                与书写顺序无关
                静态代码块只会在第一次调用构造方法时执行
        */
    }  
}
同步代码块(多线程会讲到)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值