java 包及其内部类

 package关键字的作用和注意事项

为什么要有包?

将字节码文件进行分类存放

定义包

  • package 包名
  • 多级包使用·分隔

import关键字

如果我们要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。import后,便于编写代码,提高可维护性。

注意要点:

  1. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。

  2. 如果导入两个同名的类,只能用包名+类名来显示调用相关类: 

1

java.util.Date date  = new  java.util.Date();

import 关键字的有种导入方式

  • import java.sql.Date; // 推荐使用这种
  • import java.util.*;//导入该包下所有的类。会降低编译速度,但不会降低运行速度。

什么是内部类?

一个类放在另一个类的内部定义,称为内部类(innerclasses)。

特点及作用

  • 内部类可以使用public、default、protected 、private以及static修饰。
  • 而外部顶级类(我们以前接触的类)只能使用public和default修饰。
  • 内部类是相对独立的一种存在,其成员变量/方法名可以和外部类的相同。
  • 内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
  • 内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性。
  • 接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整。
  • 只为外部类提供服务的情况下可以优先考虑使用内部类。
  • 使用内部类间接实现多继承:每个内部类都能独立地继承一个类或者实现某些接口,所以无论外部类是否已经继承了某个类或者实现了某些接口,对于内部类没有任何影响。

如何访问内部类对象的属性和方法?

要先创建对象才能访问。格式为

Outer.Inter  I =  new Outer().new Inter();//  外部类名.内部类名 = 外部类对象.内部类对象
package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Outer.Inter I = new Outer().new Inter();  // 创建对象 ,访问内部类的属性和方法

        I.run();
        Outer O = new Outer(); // 创建外部类对象,
        O.demo();// 调用共用方法


    }
}

class Outer {
    int age = 20;

    class Inter {
        private int a = 18;

        public void run() {
            System.out.println("我是内部类里的方法");
            System.out.println(age); // 内部类可以直接使用外部类的属性

        }
    }

    public void demo() {  // 创建一个公有的方法,在里面创建内部类的对象,让其访问自己的私有属性
        Inter I = new Inter();
        System.out.println(I.a);
    }

}
0---------------------------------
我是内部类里的方法
20
18

局部内部类:

推荐去下面的博客详细了解

http://www.sxt.cn/Java_jQuery_in_action/five-classification.html

猜你喜欢

转载自blog.csdn.net/weixin_44462792/article/details/86533637