java基础十一 面向对象特点_封装

封装,就是隐藏对象的属性和实现细节,仅对外提供公共访问的方式

封装有什么好处?

隐藏了自身的属性以及实现细节,只提供公共的访问方式给别人,这样也就提高了安全性

也提高了代码的复用性(把要重复做的事情封装在一起做)

封装的原则是:将不需要对外开放的内容都隐藏起来,只给别人一个方法来调用自己

private关键字:

是一个权限修饰符,可以用来修饰成员变量和成员方法,被它修饰以后就只能在本类被访问

this关键字:

代表当前对象的引用,用它可以来区分一个重名的成员变量和局部变量

构造方法:

用来给对象的属性进行初始化

构造方法名与类名必须是一样的,构造方法是没有返回值类型的(连void都没有)

字面上我们不用写return语句,因为系统会默认给构造方法一个return语句,样式为return;


在一个基本类中,可以有多个构造方法,这就构成了方法重载

重载:发生在同一个类中,方法名字都一样,参数列表不一样(包括个数,类型,顺序),与返回值类型无关

创建对象时,如果这个基本类没有给出构造方法,系统就会默认给出一个无参构造器

但是,如果这个类有一个或多个有参构造器时,系统就不会给你一个无参构造器了,此时必须自己写一个无参构造器


创建一个对象在内存中是怎么进行的:

假设有一个基本类Teacher,并且带有一个无参构造器

创建Teacher类的对象就是: Teacher t = new Teacher();

这句话在内存中是这么运行的:

1.Teacher.class加载进内存中的方法区

2.声明一个Teacher类型的引用t

3.在堆区创建Teacher对象

4.给这个对象进行默认初始化

5.Teacher类的构造方法进栈,利用构造方法对该对象的属性进行显示初始化,初始化以后,构造方法弹栈

6.将这个对象的地址值赋给引用s,引用s通过这个地址就可以访问到这个对象了

static关键字:(与类有关的)

从字面上看,意思就是静态的,这个类是随着类的加载而加载的,并且在对象创建之前就已经存在了(因为类优先于对象存在,没有类怎么去创建该类对象);

静态资源会被这个类的所有对象共享,静态的方法可以通过(类名.静态方法名)来调用


静态方法:static修饰的方法

静态方法中是没有 this关键字的

因为静态是随着类而加载的,而this是随着对象创建而存在的,静态是优先于对象存在的

静态方法只能访问静态成员(静态成员变量以及静态成员方法)

而非静态方法既可以访问静态成员又可以访问非静态成员

静态变量:static修饰变量,又叫类变量

静态变量与成员变量的区别?

两者所属不同:静态变量属于类;但是成员变量属于对象;所以静态变量又叫类变量,成员变量又叫实例变量或者对象变量

两者在内存中的位置不同:静态变量存在于方法区里面的静态区 ; 而成员变量存在于堆区

两者出现时间不同:静态变量随着类加载而加载,随着类消失而消失;成员变量随着对象的创建而存在,随着对象消失而消失

两者调用方法不同:静态变量可以用类名或者对象名来调用;成员变量只能通过对象名调用

代码块 :

含义:在java中,用{ }括起来的代码就是代码块

分类:根据代码块的位置和声明不同,可以分为:局部代码块,构造代码块,静态代码块,同步代码块

局部代码块:{ }表示

在方法中出现,用来限定变量的生命周期,可以及早释放里面的变量,提高内存的利用率

构造代码块:{ }表示

也叫初始化块,在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行,也就是说:没创建一次对象都会执行一次,并且还优先于构造函数执行
静态代码块 static { }表示
在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。一般用于加载驱动,它还优先于主方法执行

同步代码块:后续线程会重点讲

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值