十六、OOP之理解《final关键字、权限修饰符和包》

封装、继承、多态是OOP的三大特性。看完了《类和对象》《封装》《继承》《各种内部类》在帮助大家理解一下本篇《final关键字、权限修饰符和包

一、final关键字 (英文意思是:最终的,最后的 )

1、所以被 final修饰之后不能改变 可以修饰 类、方法、变量
2、修饰类

(1) 表示一个类是最终的,此时不能有子类了

(2) 一个类如果被final修饰了,就是一个断子绝孙类

3、修饰方法

(1) 表示这个方法不能被重写了,是一个最终方法

4、修饰变量

(1) 一个变量如果被final修饰了,就会变成常量,只能赋值一次

① 可以定义和赋值分开,但是只能赋值一次

public class Demo01 {
    public static void main(String[] args) {
        //常量:所有单词的所有字母都要大写,单词和单词之间使用下划线连接
        final int A = 100;//定义一个常量,常量的值为100
//        A = 200; 只能赋值一次
        final int B;
        B = 20;
        System.out.println(B);
    }
}
//修饰类,表示该类不能有子类,是一个断子绝孙类
final class Fu{}
//class Zi extends Fu{
//}
class Fu2{
    //如果是最终成员变量,就一定要注意,在创建对象的时候,在初始化的过程中,一定要赋值
//    final int C;
//    {
//        C = 20;
//    }
    public Fu2(){}//此时空参构造不会给C赋值,所以如果用空参,则C没有值,就报错
    public Fu2(int c){
        C = c;
    }
    //final修饰方法表示最终方法  不能被重写
    public final void test(){
        System.out.println("我是该功能的天花板");
    }
}
class Zi extends Fu2{
//    public  void test(){
//        System.out.println("我能行吗");
//    }
}

二、权限修饰符

修饰成员,决定变量可以在什么位置被访问,封装的体现 控制属性和方法的访问范围

(1) private

① 只能在本类中被访问

(2) default默认

① 可以在本类中被访问

② 可以在本包中被访问

(3) protected

① 可以在本类中被访问

② 可以在本包中被访问

③ 可以在其他包的子类中被继承

(4) public

① 可以在本类中被访问

② 可以在本包中被访问

③ 可以在其他包的子类中被继承

④ 可以在其他包的无关类被访问

三、包

1、分类管理代码资源的文件夹,这些文件夹会参与编译 包的本质就是文件夹(package.pkg.pkg)

如 com.demo下的Demo1编译之后字节码文件名:com.demo.Demo01 【全类名 = 包名 + 类名】

2、作用:

(1) 统一管理代码资源 并 保证代码编译后 全类名唯一

(2) 保证代码运行过程中,直接进入到指定的包找到对应的类 import package.package

3、命名规则: 包名和包名之间使用点间隔,使用公司的域名倒写 全部小写

​ 一般利用公司域名倒置作为包名; www.baidu.com 包名com.baidu.www

4、包的声明:声明java文件是属于哪个包 package + 包路径

*通配符导入包下所有的类

test包下  (不同包)
package com.test;
//同一个包下的类,相互之间可以直接访问
public class Demo01 {
    public static void main(String[] args) {
        OldMan o = new OldMan();
    o.show();
    }
}
package com.test;
//不同包下可以有同名的类
//同一个包下不能有同名的类
public class OldMan {
    public void show(){
        System.out.println("我是com.test包下的OldMan~~~~~~~~~~~~~~~~~");
    }
}
----------------------------------------------------------------------------------
demo包下  (不同包)
package com.demo;
public class Demo02 {
    public static void main(String[] args) {
        OldMan o = new OldMan();
        o.show();
    }
}
package com.demo;
public class OldMan {
    public void show(){
        System.out.println("我是com.demo包下的OldMan");
    }
}
---------------------------------------------------------------------------------------
HomeWork包下
package com.homework;
import com.demo.OldMan;
//导包的时候,不能出现导入两个同名的类
public class Demo01 {
    //只有公开的类,才可以在不同的包下创建对象时使用
    public static void main(String[] args) {
        //全类名的方式创建对象
        //如果在某个类中,需要使用两个同名的类,分别属于不同的包下,就需要使用全类名的方式去访问
        com.demo.OldMan o = new com.demo.OldMan();
        o.show();
        com.test.OldMan o2 = new com.test.OldMan();
        o2.show();
        //后来经过优化之后,可以使用import进行导包,定位要使用的类在哪个包中
        OldMan o3 = new OldMan();//此时因为上方导入的是demo包下的类
        //此时创建对象。默认使用的就是该包下的类
        o3.show();
        com.test.OldMan o4 = new com.test.OldMan();;//此时因为上方导入的是demo包下的类
        //此时创建对象。默认使用的就是该包下的类
        o4.show();
    }
}

扩展:

//IDEA:ctrl+d;复制当前行到下一行
java doc
https://docs.oracle.com/javase/8/docs/api/
 api java帮助文档
 /*
 * @author   Shuyuan    作者名
 * @version  1.0        版本号
 * @since    1.8    指明需要最早使用的jdk版本
 * @param            参数名
 * @return           返回值情况
 * @throws           异常抛出情况
 */
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值