Java基础学习4
一、Java 中的 static 使用之静态方法
1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
二、封装
1、概念:将类的信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2、好处:
a.只能通过规定的方法访问数据
b.隐藏类的实例细节,方便修改和实现
3、封装 实现步骤:
修改属性的可见性 ----》设为private
创建getter/setter方法 ----》用于属性的读写
在getter/setter方法中加入属性控制语句 ----》对属性值的合法性进行判断
三、包
包的使用规则:
可以通过import 关键字,在某个文件使用其它文件中的类。如:import com.imooc.music.MyClass
Jave中,包的命名规范是全小写字母拼写
使用的时候不但可以加载某个包下的所有文件
如:com.imooc.*;也可以加载某个具体子包下的所有文件,如:com.imooc.mus
java.lang 语言基础类
java.util 各种工具类
java.io 输入,输出相关功能类
同一个包中,调用其它类的静态方法直接,类名.方法名即可,如果是非静态方法,则需new一个对象出来,然后用对象.方法名调用
这几部分的代码均在文件夹里!!
四、访问修饰符
访问修饰符:可以修饰属性和方法的访问范围
修饰符 本类 同包 子类 其他
private true
默认 true
protected true true true
public true true true true
五、Java中的内部类
/外部类HelloWorld
public class HelloWorld {
// 内部类Inner,类Inner在类HelloWorld的内部
public class Inner {
// 内部类的方法
public void show() {
System.out.println("welcome to imooc!");
}
}
public static void main(String[] args) {
// 创建外部类对象
HelloWorld hello = new HelloWorld();
// 创建内部类对象
Inner i = hello.new Inner();
// 调用内部类对象的方法
i.show();
}
}
举例:
//外部类HelloWorld
public class HelloWorld{
//外部类的私有属性name
private String name = "imooc";
//外部类的成员属性
int age = 20;
//成员内部类Inner
public class Inner {
String name = "爱慕课";
//内部类中的方法
public void show() {
System.out.println("外部类中的name:" +HelloWorld.this.name );
System.out.println("内部类中的name:" + name );
System.out.println("外部类中的age:" + age);
}
}
//测试成员内部类
public static void main(String[] args) {
//创建外部类的对象
HelloWorld o = new HelloWorld ();
//创建内部类的对象
Inner inn = o.new Inner() ;
//调用内部类对象的show方法
inn.show();
}
}
1、静态内部类
静态内部类是 static 修饰的内部类,这种内部类的特点是:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
举例:
//外部类
public class HelloWorld {
// 外部类中的静态变量score
private static int score = 84;
// 创建静态内部类
public static class SInner {
// 内部类中的变量score
int score = 91;
public void show() {
System.out.println("访问外部类中的score:" + HelloWorld.score );
System.out.println("访问内部类中的score:" + score);
}
}
// 测试静态内部类
public static void main(String[] args) {
// 直接创建内部类的对象
SInner si = new SInner();
// 调用show方法
si.show();
}
}
2、方法内部类
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。
六、final关键词
final修饰类,则该类不允许被继承
final修饰方法,则该方法不允许被覆盖(重写)
final修饰属性
则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)
或在构造方法中赋值(但只能选其一)
final修饰变量,则该变量的值只能赋一次值,即变为常量
七、super关键字
super():
如果子类的构造方法中没有显示调用父类的构造方法,则系统会默认调用父类无参的构造方法。
如果显示的调用构造方法,则必须写在子类的构造方法的第一行;
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译错误。
在对象的内部使用,可以代表父类对象。
访问父类的属性
super.age
2.访问父类的方法
super.eat()
下一篇: 理解OpenCL中的工作组、工作项的索引