java随笔2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java随笔2相关的知识,希望对你有一定的参考价值。
类的高级概念
本章目标
1.理解访问修饰符
2.理解封装的概念和好处
3.理解类的静态成员
4.掌握静态初始化块和实例初始化块的用法
5.理解内部类的使用方式
第一访问修饰符
Public(公用)
Protected(受保护)
Private(私用)
没有访问修饰符
访问修饰符适用的五种分类
本类:可以访问public;可以访问protected;访问默认的;可以访问private
1同包类
1.1子类:可以访问public;可以访问protected;访问默认的;可以访问private
1.2非子类:可以访问public;可以访问protected;访问默认的;不可以访问private
2.不同包类
2.1子类:可以访问public;可以访问protected;不可访问默认的;不可以访问private
2.2非子类:可以访问public;不可以访问protected;不可访问默认的;不可以访问private
封装
Get 和set方法
Get***();访问器
Set***();修改器
封装的好处:
1.类的成员的变量可以成为只读或者只写的.
2.类可以对存储在其成员变量中的内容有一个整体的控制.
3.类的用户不需要知道类是如何存储数据的.
Static(是JAVA中的关键字;意思为静态)
凡是static修饰的通用的特性:
1.与对象无关,属于类级别的操作
2.在加载期会有特殊操作
static修饰属性特点:
1.全类所有对象共享一个属性(属性在数据段的静态区)所以才有语法类名,属性名的方式进行操作,除非发现全类共享,否则变量不要设计为static,常量直接用public static final.
2.static修饰的属性的加载期(main方法运行之前)就被产生到内存的数据段的静态区中了.
static修饰构造方法:不能在构造方法修饰,因为是产生对象的与对象有直接联系,而static是对对象无关的.
static修饰方法:
1.从调用上,static方法可以用类名进行调用,非static的必须用对象进行调用
2.从实现上,static方法内部只能调用static的属性和行为,不能调用非static的属性和行为,但是非static方法都可以
3.从实现上,static方法内部不能用this.;super.
Static方法可以用类名访问,这个时候没有当前对象的存在
static方法在加载期会被优先加载,此时还没有加载非static的方法和属性,所以不认识它们也就不能调用
Static 方法没有办法直接调用非static方法或属性,还因为没有办法确定对象,古国能够在static方法中绑定上对象,还是可以调用的
Static修饰的方法都只跟类有关,与对象无关
适用方法:只有工具类(没有直接对象,不去改变被调用的类的属性和方法,直接调来使用)的工具方法,才设计为static
在方法中的初始化块
1.实例初始化块 {}
在语法上:初始化块就是一个没有方法申明的代码块
在作用上:对象进行初始化属性操作
适用环境:当我们产生对象的时候,会被自动调用从而初始化属性操作
由于在执行时机上,处于调用构造方法会自动调用初始化块,作用也和构造方法重复都是初始化,会被构造方法中的代码或者属性直接赋值的效果覆盖,所以这个语法很少使用了,唯一的作用就是面试题
Static{}静态初始化块,在加载类的时候被自动调用,一个类被加载一次,所以这个初始化块也只运行一次.对于项目中,很多在运行之前要做的准备动作,都应该写在静态初始化块当中
2.属性
3.构造
4.方法
内部类
在一个类的内部定义的类,称为类部内
特点:
1.独立的类有一个class文件
2.同样需要编译器
3.同样可以产生对象
位置不同的分类:
1.在一篇类中再定义一个类是平行关系的就叫作成员类
语法:
1.1成员内部类是可以使用访问修饰符修饰的
1.2内部类中可以有属性\构造\行为
1.3但是不能有静态属性和静态方法
1.4编译后,也会产生独立的class的文件叫外部类名$内部类名.class
1.5使用时在外部,首先保证内部类是访问修饰符允许的,然后产生外部对象,最后利用外部对象.new的方式产生内部类对象
1.6在外部内部类中,语法相似,用this.new产生外部类对象
1.7内部类的发方法中可以访问外部类的属性或方法
Public static class name(){}在public class name1{}中属于静态内部类是成员内部类的一种特列(可以有静态属性和静态方法,只能访问外部类的静态属性和方法),在外部首先保证内部类是访问修饰符允许的,然后利用new外部类类名.内部类类名
2.局部内部类
定义在方法内部
语法:
2.1class 前面没有访问修饰符
2.2内部类中可以有属性\构造\行为(但不能有静态属性和方法)
2.3可以访问外部类的属性和方法
2.4编译后,也会产生独立的class的文件叫外部类的类名$数字+内部类名.class
2.5使用:只能在该方法内部使用且只能在定义语句后面用.
2.6局部类中的所以成员,访问修饰符无意义
2.7产生内部类对象后,可以调用内部类中所以属性和行为,不受访问修饰符的限制
匿名内部类(是局部内部类的特列,只是没有类名)
语法new Object(){}.innerMethod();
1.在产生对象的同时,给该对象定义增加的属性和行为
2.可以书写属性\方法\重写父类的方法,不能写构造,没类名
3.可以访问外部类的属性和方法
4.编译后,也会产生独立的class的文件叫外部类的类名$数字.class
5.使用:只能用这一次.
以上是关于java随笔2的主要内容,如果未能解决你的问题,请参考以下文章