1、成员变量与局部变量的区别
2、构造方法的特点
- 也是一种方法,不过与普通方法不一样的是普通方法只说明这个类能干什么,构造方法能创建一个对象,并且初始化对象的值。
- 构造方法与类同名,且没有返回值。(eg: public helloworld() )
可分为有参构造方法(参数是为类成员变量赋的值),或无参构造方法。 - 在main 函数执行时,自己创建的构造方法的优先级比默认的构造方法高。而且自己创建的有参或无参在main函数调用时要一一对应。
- 同样的,构造方法也属于方法,有重载特性。
3、静态修饰关键字 static
static可以修饰变量、方法和代码块。分别称为静态变量、静态方法、静态初始化块。
- 定义:Java 中被 static 修饰的成员称为静态成员或类成员。
- 作用域:它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。
- 访问:静态成员可以使用类名直接访问,也可以使用对象名进行访问。(当使用对象访问时一般就会给成员赋新值了 )当然,鉴于他作用的特殊性更推荐用类名访问~~
静态方法注意事项
- 1、 静态方法中可以直接调用同类中的静态成员(方法和变量),但不能直接调用或访问普通成员。可以通过创建对象来访问普通成员(方法和变量)
- 2、普通成员方法则可以直接访问同类的非静态变量(方法)和静态变量(方法)
静态初始化块注意事项
静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能初始化静态变量,不能初始化普通的成员变量。
程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块,而是执行普通初始化块和构造方法。
4、面向对象三大特征之封装
-
说明
将某些信息(一般是类的成员变量)隐藏在类中,只能通过本身类的方 法来访问或操作,外部程序不能访问
-
好处
1.隐藏类的细节,方便修改,符合高内聚低耦合的特点。 2.能保护类的内部信息,也更安全
-
3 步骤
1. 体现隐藏,保护的作用 ---------用private 修饰类的成员变量 2. 体现内部访问-----------------------用public getter/setter()方法来return成员变量 3. 在public getter/setter()方法中加控制语句对属性值的合法性进行判断。因为这个方法类似可以看做是个输出的接口,输出当然要合法,所以在这里要判断。
5、package 包
体现封装的特性,类似名称空间。管理类就像文件夹管理文件。名字相同的类放在不同的包中就不同。同一个包内不能放名字相同的类。
- 使用方法
- import + 包名(其实是类名)
eg: import com.imooc.music.Myclass;
import com.imooc.music.*; ( 这里的星号代表此包中的所有类) - 包名规范都是小写
- import + 包名(其实是类名)
6、修饰符的范围
7、this关键字
代表当前对象,用时是this.属性 (变量或方法) 一般会在系统自动生成getter()和setter() 时使用,用来区分类的成员变量和方法的形参。
8、内部类
对于内部类,我的理解是还是体现封装性,保护内部数据访问权限,体现高内聚低耦合的特点。通过外部类的实例化对象来创建内部类的对象,可以理解为要受一点麻烦才能访问到内部类的数据。所以把private级别较高的数据就放到内部类里面。
eg: helloworld hello = new helloworld(); // 创建外部类对象
Inner i = hello.new Inner();// 创建内部类对象
i.show(); // 调用内部类对象的方法
-
成员内部类
访问权限
- Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
- Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a
- 外部类是不能直接使用内部类的成员和方法滴。通过内部类对象访问自己。
- 编译程序后,会发现产生了两个 .class 文件
- 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
System.out.println("外部类name:" + HelloWorld.this.name ); System.out.println("内部类name:" + name );
-
静态内部类
是 static 修饰的内部类,(主要体现static的特点)特点如下:
-
静态内部类不能直接访问外部类的非静态成员(与前面static讲的访问权限相同,可以被普通类访问,但不能访问别人。)
可以通过 new 外部类().成员 的方式访问
- 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;
-
创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
(相比于非静态内部类,省略了new前面的外部类名)
System.out.println("外部类 private成员"+new helloworld().a); System.out.println("静态内部类 成员"+score); System.out.println("外部类 静态成员"+helloworld.score);
- 方法内部类
- 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
- 在方法内部,用内部类来创建对象,然后对象调用内部类方法,不能在外面使用。
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦