Java学习笔记(一)----封装 继承 多态 抽象 接口

包装  -- 对外隐藏特征和行为,内部实现细节 封装有利于程序的安全
  -- 使用private修饰符私有化类的属性和方法
 -- encapsulation
 -- 隐藏对象中的字段
 -- 提供公共的操作方法
 -- 对输入的值进行限制
   --对封装的属性提供getter()  和 setter()方法 
     -- 只有getter()方法无 setter() 的属性为只读属性
     -- 只有setter()方法无getter() 的属性为只操作属性
 -- 封装包括 属性 和方法
   -- 包括私有化属性和方法
   -- 提供公共的接口
   -- 限制数据的访问

 ***************************************
 访问修饰符
   -- public    
   -- private 
   -- protected  --有关系 子类 同一个包才能够用
   -- default   -- 默认 没写就是默认
 继承
   -- 继承就是将程序中共同的特征和行为抽取出来建立一个类,使其他类可以沿用此类中的属性和方法。这不仅仅可以减少程序中的重复代码,而且易于程序扩展
   -- 提供子类可以沿用父类的某些行为和特征的一种方式,在程序中使用继承,有利于程序的扩展。
   -- 使用关键字extends进行继承

   -- 子类沿用父类的某些属性或方法的一种方式,同时有利于子类的扩展
   -- 特点
     --1、不能继承私有的属性和方法,构造方法也不能够继承
     --2、一个类有且只有一个父类(继承的单一性)
     --3、继承具有传递性
     --4、父类类型可以指向子类对象,但是只能使用父类类型可以使用的属性和方法 
           Persion persion = new Child(); persion只能够调用Persion类中的属性和方法
     --5、子类可以拥有和父类一样的方法,具体调用哪个方法由对象的实际类型决定
           extends 方法的重写  具体调用哪个方法由new后面实例化的对象决定
     --6、子类类型到父类类型可以自动类型转换 
            父类类型到子类类型需要强制转换(父类类型实际上是一个子类对象才可以使用)
            Animal animal = new SmallMonkey();
            Monkey monkey = new SmallMonkey();
            animal(大) 转换成 monkey(小)时候可以强制转换 因为他俩作为父类 实际上都是指向子类SmallMonkey的对象
     --7、区分父类对象和子类对象使用关键字:this 和 super
     --8、this() super() 表示构造方法 ,没有参数表示无参构造器 ,带参表示带参构造器
                                      每个子类的构造方法都默认的调用了父类的无参构造方法
                                      当父类没有无参构造器时,子类必须显示调用父类有的构造方法
     --9、子类中调用父类的构造方法时关键字super()必须放在第一行 

  --Object 是所有类的父类 所有类都直接或者间接的继承与object
    -- 当类后没有关键字extends时候 就隐式的调用Object
  -- final
    final修饰的类不能够被继承
    final修饰父类中的方法不能够被重写
    final修饰的变量表示常量 值不能够被修改









******************* 多态  接口***********************
-- 多态的实现
  -- 多态是指一个对外接口,多种实现方式,即一个接口使用不同的实例执行不同的操作,在Java中多态有两种表现形式,方法重载overload 和 重写 override
  --方法的重写  和 方法的重载
  --重载:方法名相同 参数列表不同
    -- 方法重载应在同一类中
    -- 重载方法名称相同 参数列表不同
    -- 方法的返回值不作为方法重载的区分条件
  -- 重写
    -- 分别存在于父类和子类当中
    -- 子类和父类方法名相同 返回类型相同
        -- 重写的返回类型不能够比父类返回类型大  返回类型为引用类型
    -- 子类和父类的方法参数列表相同
    -- 子类方法修饰符范围不能够比父类小




 ******************* 抽象类 **********************
抽象类
  -- 抽象类 
    -- 抽象类作用类似于模板,其目的是方便开发人员根据抽象类的格式来修改和创建新类
    -- 抽象类用于继承,有利于程序的拓展
    -- 定义抽象类 abstract
      -- abstract 定义的方法为抽象方法
      abstract class Book(){
            public abstract void getBookName();
      }
      -- 特点
        -- 匿名类  (定义了匿名类来实现抽象类) TestAbstract tAbstract = new TestAbstract() {};
        -- 抽象类可以定义构造方法,但是构造方法不能够被实例化 (上面例子是匿名类实现抽象类)
        -- 可以拥有非抽象类中的一切
        -- 抽象类中可以有抽象方法 (使用abstract关键字修饰的方法,且没有方法的具体实现)
        -- 存在抽象方法的类一定是抽象类  (接口中存在抽象方法,但是接口不是抽象类)
        -- 子类继承抽象类必须实现其抽象方法,除非子类也是抽象类就不必实现
    -- 抽象方法
        -- 抽象方法不能够以static 和 final  private protected修饰 
        -- static 修饰的是类所有 实例化时候重写抽象方法 该方法就属于实现类的  
        -- final 属于终态 无法被重写
        -- private 私有化 访问范围最小


  ******************* 接口 *************************
  为什么使用接口
  -- 弥补继承的单一性 , 一个类可以实现多个接口
  -- 接口实现多继承
  -- 定义
    -- 接口就是某个事物对外提供的一些功能的声明
    -- 作用: 利用接口实现多态,弥补Java单一继承的缺陷
    -- 定义接口关键字 interface
  -- 特点
    -- 静态常量(public static final 可省略)(接口中定义的变量都为静态常量)
    -- 抽象方法(public abstract 可以省略)
        public abstract void takePhotos(); 等效于  void takePhotos()
    -- 实现接口关键字 implements
    -- 实现接口时候必须实现接口全部方法
    -- 实现多个接口时候 接口之间使用“,”隔开
    -- 接口不支持实现接口(接口中的方法都是抽象方法,如果实现接口 实现的接口就跟抽象方法有矛盾)
    -- 接口不能实例化 同时也不能有构造器


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值