封装和继承

1.封装的概念
    将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

2.如何实现封装
    1.修改属性的可见性
    2.创建公有的set/get方法
    3.在set/get中加入属性控制语句对属性值的合法性进行判断

3.封装的好处?
    便于使用者正确使用系统,防止错误修改属性
    有助于系统之间的松耦合,提高系统独立性
    提高软件的可重用性
    降低了构建大型系统的风险

4.包的作用
    允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件
    防止命名冲突区分名字相同的类
    有助于实施访问权限控制

5.创建包
    1.创建包 然后再创建类
    2.创建类的同时创建包
    要求:
        1.使用关键字package 声明是包,以分号结尾
        2.作为Java源文件的第一条语句

6.包的命名规范
    1.包名由小写字母组成,不能以圆点开头或结尾
    2.包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
    3.包名后续部分依不同机构内部的规范不同而不同

7.如何导入包
    使用import关键字导入包
    规范:导入包要精确到类名,不能使用星号

8.使用包的注意事项
    一个类同时引用了两个来自不同包的同名类
        必须通过完整类名来区分
    每个包都是独立的,顶层包不会包含子包的类
    package和import的顺序是固定的
        package必须位于第一行(忽略注释行)
        只允许有一个package语句
        其次是import
        接着是类的声明

9.访问权限控制
    1.类的访问控制
        public修饰符:公有访问级别
        默认修饰符:包级私有访问级别
    2.类成员的访问控制
        private
        默认修饰符
        protected
        public

10.static修饰符
    作用:
        成员变量
            静态变量,可以直接通过类名访问
        成员方法
            静态方法,可以直接通过类名访问
        代码块
            静态代码块,当Java虚拟机加载类时,就会执行该代码块
                JVM加载类时,加载静态代码块
                    如果有多个静态块,按顺序加载
                    每个静态代码块只会被执行一次
        类的成员变量包括
            类变量(静态变量)
                被static修饰的变量
                在内存中只有一个拷贝
                类内部,可在任何方法内直接访问静态变量
                其他类中,可以直接通过类名访问
            实例变量
                没有被static修饰的变量
                每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
            
11.static变量的作用:
    (1)能被类的所有实例共享,可作为实例之间进行交流的共享数据
    (2)如果类的所有实例都包含一个相同的常量属性,可把这个属性定义为静态常量类型,从而节省内存空间

12.static方法
    静态方法:可直接通过类名访问
        静态方法中不能使用this和super
        不能直接访问所属类的实例变量和实例方法
        可直接访问类的静态变量和静态方法
    实例方法:通过实例访问
        可直接访问所属类的静态变量、静态方法、实例变量和实例方法
    静态方法必须被实现(main)
        main方法为什么是静态方法,静态方法属于类,所以当类被加载的时候,main方法也会被加载,满足了main方法作为程序入口的要求,即不需要被调用即可执行

13.static常见错误
    在实例方法里不可以定义static变量

14.访问修饰符
    访问修饰符protected
        可以修饰属性和方法
        本类、同包、子类可以访问 不同包不可以访问
    访问修饰符 public
        可以修饰属性和方法和类
        本类、同包、子类可以访问 不同包也可以访问
    访问修饰符 默认访问修饰符
        可以修饰属性和方法和类
        本类、同包、子类(同包)可以访问, (子类)不同包不可以访问
    访问修饰符 private
        可以修饰属性和方法
        本类可以访问 同包、子类、不同包不可以访问    
    
    访问权限修饰符
                同类       同包        父子类              任意地方(不同包)
    public      可以       可以         可以               可以
    protected   可以       可以         可以               不可以
    默认        可以       可以         同包可以 不同包不可以  不可以
    private     可以       不可以       不可以              不可以

15.继承好处:
    代码复用
16.实现继承:
    抽取公共属性和方法定义父类
    定义子类使用关键字extends 继承父类
    继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
    使用继承要父子类满足is-a的关系
   
17.继承理解:
    super理解
        super关键字,指代当前父类对象
        在子类构造方法中必须是第一句话
        super不能访问父类中定义为private的属性和方法
    super作用:
        可以访问父类的有参无参构造方法
        访问父类的属性
        访问父类的方法
    继承条件下构造方法调用规则
        1.如果子类构造方法没有通过super显式调用父类的构造方法,或者是通过this显式调用自身的其它构造方法,它会默认先调用父类的无参构造方法,然后再调用子类的这个构造方法
        2.如果子类通过super显式调用父类的有参或者无参构造方法,他会先调用指定的父类的构造方法,然后再调用本类的构造方法
        
        3.如果子类构造方法通过this显式调用了本类其它构造方法,也要符合以上两条原则
        
        生成子类对象的时候都要符合以上三条原则
    子类可以从父类继承的资源
        public protected 修饰的属性和方法
        同包 默认修饰符修饰的属性和方法
    
    不可继承的资源有哪些
        不同包 默认修饰符修饰的属性和方法
        private 修饰符修饰的属性和方法
        父类的构造方法都是无法继
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值