第二章 封装,继承与多态

1.什么是封装?

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

2.封装的两个大致原则

        把尽可能多的东西藏起来,对外提供便捷的接口

        把所有的属性藏起来

3.封装三步骤

(1)属性私有化

(2)添加get,set方法

(3)在get,set添加属性控制语句

4.封装四个好处

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

5.包(小写字母组成,不能以圆点开头结尾,组织域名倒置,类第一句话出现)

cn.kgc.java2302

信息类  pojo

操作类 dao

包有助于访问权限修饰

注意点:一个类同时引用了两个来自不同包的同名类

                每个包都是独立的,顶层包不会包含子包的类

                package和import的顺序是固定的:

                                                                        package必须位于第一行(忽略注释行)
                                                                        只允许有一个package语句
                                                                        其次是import
                                                                        接着是类的声明

6.访问修饰符

(1)四种类型修饰符

public         公开的

private       私有的

protected  保护的

                 默认的

(2)访问范围

本类访问        四种级别都可以访问到

不同类同包    只有私有不能访问,其他三种都可以访问

不同包访问    除了公开的可以访问,其他都不可以

(3)类的访问权限控制: public ,private,默认的(内部类,不常用)

         类成员的权限访问控制:public  公开的,private 私有的  , protected  保护的 ,        默认的

(4)类成员访问修饰

 默认修饰符中的子类中,,同包可以不同包不可以

(5)static修饰符

成员变量
        静态变量,可以直接通过类名访问
成员方法
        静态方法,可以直接通过类名访问
代码块
        静态代码块,当Java虚拟机加载类时,就会执行该代码块

需要当前类的各个对象共享的变量,才能定义为静态变量。

作用:

(1)能被类的所有实例共享,可作为实例之间进行交流的共享数据

(2)如果类的所有实例都包含一个相同的常量属性,可把这个属性定义为静态常量类型,从而节省内存空间

7..继承好处:

代码复用


8.实现继承:

抽取公共属性和方法定义父类
定义子类使用关键字extends 继承父类
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
使用继承要父子类满足is-a的关系


   
9.继承理解:

  super理解
        super关键字,指代当前父类对象
        在子类构造方法中必须是第一句话
        super不能访问父类中定义为private的属性和方法
    super作用:
        可以访问父类的有参无参构造方法
        访问父类的属性
        访问父类的方法
    继承条件下构造方法调用规则
        1.如果子类构造方法没有通过super显式调用父类的构造方法,或者是通过this显式调用自身的其它构造方法,它会默认先调用父类的无参构造方法,然后再调用子类的这个构造方法
        2.如果子类通过super显式调用父类的有参或者无参构造方法,他会先调用指定的父类的构造方法,然后再调用本类的构造方法
        
        3.如果子类构造方法通过this显式调用了本类其它构造方法,也要符合以上两条原则
        
        生成子类对象的时候都要符合以上三条原则
    子类可以从父类继承的资源
        public protected 修饰的属性和方法
        同包 默认修饰符修饰的属性和方法
    
    不可继承的资源有哪些
        不同包 默认修饰符修饰的属性和方法
        private 修饰符修饰的属性和方法
        父类的构造方法都是无法继
 

10.方法重写

父子类中,方法名相同,参数列表相同

创建对象 为  子类 zi=new 子类();

优先调用子类的方法。

11.为什么需要方法重写

1.子类具有父类所没有的属性,父类方法不能访问子类的方法属性

2.子类实现方法的结果不一样

                方法重写规则

ps:访问修饰符不能严于父类,

        返回值类型相同,或者使其子类

        父类的私有方法不能被重写

        父类的静态方法不能被重写成非静态方法

        父类的非静态方法不能重写成静态方法

        父子类静态方法同名,子类静态方法会隐藏父类的静态方法(通过类名.方法名调用的是子类的静态方法)

        子类方法不能抛出比父类方法更多的异常

12.static 

修饰成员变量变成静态变量(能被所有对象所共享的变量定义成静态变量)

     静态变量可以通过类名。属性名访问

修饰成员方法变成静态方法

     静态方法可以通过类名。属性名访问

修饰代码块变成静态代码块

        在被加载时候只会被执行一次

13.Object类重写

他是所有类的直接父类或间接父类

toString()

equals()

hasCode()

getClass()

Sting重写了父类object类里面的equals()方法,由比较内存地址变成了比较字符串值

16.方法重载和方法重写的区别

位置                同一个类中                父子类

方法名                相同                        相同

参数项                不相同                    相同或者是子类

返回值类型        无关                        相同或者是子类

访问修饰符        无关                        不能严于父类

15.多态使用方式

        1.使用父类作为参数使用

        2.父类作为返回值类型使用(常用)

17.为什么使用多态

方法传参        形参定义传的是父类类型,实际传的是子类对象

通过对象名.方法名调用的方法是子类的方法

18.什么是多态

同一种类型由于采用不同的实例而得到不同的结果

19.抽象类

使用abstract修饰的类叫做抽象类

里面可以有抽象方法也可以有普通方法

抽象类不能被实例化

子类继承抽象类

ps:代理模式

        抽象类不能被实例化,不能创建对象,可以采用代理模式,生成一个代理类,生成一个代理对象

20.抽象方法和普通方法区别

抽象方法不能有方法体

抽象方法在子类(非抽象类)必须被重写

21.类型转换

向上转型

        子类类型转成父类类型(自动类型转换),可以调用父子类都有的方法(实际上调用子类的方法)

向下转型

        父类类型转换成子类类型(强制类型转换),可以调用子类特有的方法

        需要判断子类的真实类型

instanceof    运算符可以判断子类真实类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值