欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础学习4

程序员文章站 2022-05-03 19:11:30
...

一、Java 中的 static 使用之静态方法
Java基础学习4
1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
Java基础学习4
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
Java基础学习4
3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
Java基础学习4

二、封装
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 内部类();
Java基础学习4
举例:

//外部类
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、方法内部类
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
Java基础学习4
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

六、final关键词
final修饰类,则该类不允许被继承

final修饰方法,则该方法不允许被覆盖(重写)

final修饰属性

 则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)

 或在构造方法中赋值(但只能选其一)

final修饰变量,则该变量的值只能赋一次值,即变为常量
七、super关键字
super():
如果子类的构造方法中没有显示调用父类的构造方法,则系统会默认调用父类无参的构造方法。
如果显示的调用构造方法,则必须写在子类的构造方法的第一行;
如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译错误。
在对象的内部使用,可以代表父类对象。

访问父类的属性

super.age

2.访问父类的方法

super.eat()