java中this.static.final关键字的定义

第七天课程

1. 关键字this,也叫做this语句
   this代表的是本类的对象引用
   this语句,this可以调用其他构造函数
   this()只能调用构造函数
2. 构造代码块,知道就行了

3. static静态
   不能修饰局部变量

   被static修饰的成员变量,被所有的对象共享
   被static修饰的成员变量,随着类的加载而加载
    非静态成员变量,跟随对象的存储
   优选于对象存在于内存
   静态的生命是最长,比对象生命要长
   被static修饰的成员变量,类变量,可以被类名直接调用,对象也可以调用静态成员变量

   被static修饰的成员函数,也可以被对象调用, 还可以被类名调用  
   被静态修饰的成员变量,成员函数,属于类的,不属于对象
   静态函数中,不能引用非静态变量。静态函数中,不可以写this,super

   总结一句话,先进内存的,不能调用后进内存的,后进内存的可以调用先进内存的

4. 静态的应用场景
   1 .当类中的成员变量,被所有对象共享的时候,推荐定义成静态变量
      注意,一般情况,这个变量值,是不会改变的
      在类中,不会变化的成员变量,定义成静态,变量名都大写

   2.静态函数,一般情况下,都不用静态函数
     什么时候用呢,当我函数,从来没有访问过类中的成员变量的时候
     建议将函数,定义为静态,不需要对象了

     class Demo
     {
    
       String name ="张三";
       static int AGE = 30;

       public static void show()
       {
       static int AGE = 40;
         sop(name+AGE);
       }
     }
     main(){
      Demo d =new Demo();
      d.show();
     }

 5. 静态代码块
    类中可以写静态代码块,首先会执行,一个类只执行一次

6 . 工具类的制作
     提供其他人员使用,保证工具是没有任何问题的
     数组工具:最大值,打印遍历,排序 ,二分查找
     javadoc -d 目标文件夹 -author -version ***.java

7. mian函数
     public static void main(String[] arr)
     {
    
     }

     public 被JVM调用,必须保证这个函数的最大权限
     static 不需要对象,直接被类名调用
     void   没有返回值
     main   主要的,重要
     唯一可以被修改的地方, args
     args 是虚拟机调用main函数的时候,传递的一个字符串类型的数组,数组的长度是0
     可以在程序运行的时候,手动传给数组一些字符串

8. 单例设计模式
    设计模式,解决生活中,开发中出现的问题才存在
    对象,在内存中的唯一性

    建立对象的时候,绝不可以去 new 创建对象
    虽然构造函数被private 外部的类是不能访问的,但是内部是不是可以访问
    在我自己的类中,建立自己的对象
    通过一个公共的访问函数,将这个对象进行返回

 

 

 

 第八天课程
1.继承
  |--继承的由来
    将类中的共性功能,进行抽取,抽取到另一个类中,使原有的类和抽取后的类发生继承关系
  |--继承的好处
    代码量在减少,复用性很高
    继承的出现,使类与类之间产生了关系,正是因为这个关系的出现,就导致了
    面向对象的第三个特征 ,多态性
 
  |--java中,只能单继承,不能多继承,但是可以实现多层继承

2. 什么时候使用继承,如果决定是否应该继承
  |-- 继承是为了解决现实生活中的问题而存在
  |-- 判断一个事物,是不是另一个事物中的一种
  |-- is a关系
  例子:
        猫,狗,老虎,哺乳动物中的一种
 猫,狗,老虎,继承哺乳动物

  |-- 不确定,一种事物,是不是另一种事物中的一种
      可以先视为可以继承,继承后,再看,子类是不是应该具有父类功能?
      如果子类可以具有父类的功能,继承有效,如果子类不可以具有父类的功能,继承无效
      class A{  function(){}  }
      Class B{  method() {} }
      class C extends B{
         method(){}
      }
      咖啡和酱油
      饮料
      {
        直接喝()
 解渴()
      }
      咖啡继承饮料
      {
        直接喝()
 解渴()
      }
      酱油继承饮料
      {
        直接喝()
 解渴(){}
      }

3. 继承的时候,子类和父类中成员特点
  |-- 成员变量的特点
    this可以区分本类对象中的成员变量和函数内的局部变量
    super可以区分本类对象中的成员变量和父类对象中的成员变量
    访问原则:
       1 . 函数的就近访问
       2 . 访问本类对象中的成员变量,使用this
       3 . 访问父类对象中的成员变量,使用super
    this表示本类对象
    super 表示,父类的存储位置
    this和super的用法很相似

  |-- 成员函数的特点
    当子类和父类出现一模一样的函数的时候,看上去,子类是覆盖了父类的方法
    当子类父类函数一模一样的时候,这就是函数的另一个特性,叫做重写,覆盖,复写 override
    子类有运行子类,子类没有运行父类

  |-- 构造函数的特点
    构造函数能否被继承,不能被继承
    构造函数存在覆盖,没有覆盖

    子类的构造函数,会先访问父类构造函数,自动的
    为什么子类会去方位父类构造函数,子类想看看父类中的成员变量是怎么初始化的
    子类中,所有的构造的函数,都会默认访问父类的空参数的构造函数
    子类构造函数第一个是super(),写了this()第一行就不是super,子类直接或者间接的访问
    父类构造函数

4. final关键字
  |--final是个修饰符,可以修饰成员变量,成员函数,修饰局部变量
  |--被final 修饰的类,是最终类,不能再派生子类
  |--被final修饰的函数,是最终函数,不能被覆盖
  |--被final修饰的变量,其实是一个常量
  |--将程序中固定不变的数据,一般都定义为final,而且一般都是静态的
     规范的写法:public final static double PI = 3.14;
     当程序中出现了固定不变的数据,必须写成final,体验出来你是新手

     private final static Single s = new Single();

5.抽象类
  |--由来,是对象共性抽取出来,但是抽出来共性已经不是很具体了,父类没有必要具体的规定
     没有方法体的方法,使用 abstract关键字修饰,表明这个是抽象方法,抽象方法必须存在于
     抽象类中,这个类也需要abstract关键字来修饰
  |--抽象类中,有抽象方法,抽象类,是不允许实例化对象,不能 new 抽象类类名();
     定义子类,继承抽象类,并覆盖抽象类中全部的抽象方法,建立子类对象
  |--子类覆盖抽象类中的全部方法,带有强制性

6. 抽象类细节
  |--抽象类有构造函数吗,有
  |--抽象类可以不定义抽象方法吗?可以,很少见,图形化界面中会涉及
  |--抽象不可以和哪些关键字同时出现
  |--final private static

  覆盖细节
   子类覆盖父类的方法,保证权限大于等于父类方法
   静态覆盖静态,开发中几乎没有静态覆盖静态

 

第九天课程
1. 接口:
  当抽象类中的方法,全部是抽象方法的时候,这时可以把该类定义成接口
  可以先期将接口理解为特殊的抽象类(接口中全部抽象方法,抽象类中可以有普通方法)

  定义方式 interface 接口名{}

2. 接口特点
  |--接口中的方法都是抽象的
  |--接口不能被实例化对象,只有子类实现了接口中的所有抽象方法后,该子类可以实例化对象
  否则该子类还是一个抽象类

3.接口中成员的特点
  |-- 成员变量
    接口中的成员变量,都有固定修饰符 public static fianl
  |-- 成员方法
    接口中的成员方法,public abstract

  |-- 共同特点,权限必须public

4. 子类实现接口
   |-- 类与类之间是继承关系,类与接口之间是实现关系 关键字 implements
   格式: 子类 implements 接口
           {
      实现全部抽象方法
    }
5. 实现和继承的区别
  类与类之间是继承,类中是可以定义非抽象方法的,类只要继承,就可以使用了
  接口中的方法全都是抽象的,必须由子类全部实现全

6. 接口的多实现
  |--类可以同时实现多个接口,并全部实现接口中的抽象方法,建立子类对象
  java将类的多继承进行了改良,同时实现多个接口,避免了安全隐患
  因为接口中没有方法体,需要子类实现,运行以子类为主
  子类可以继承一个类,并实现多个接口

  |--类是继承体系的共性内容,而接口是该体系中的扩展功能

7. 接口的思想
  |-- 生活中的实例
  |-- 接口是对外暴露的规则
  |-- 接口是功能的扩展
  |-- 降低了耦合度,提高了扩展性

8. 接口和抽象类的区别 --学员吸烟案例
  |-- 抽象类只能被单继承,接口可以多实现
  |-- 抽象类中可以定义非抽象方法,直接被子类使用
  |-- 接口中只有抽象方法,需要子类全部实现
  |-- 抽象类中定义继承体系中的共性内容
  |-- 接口中定义体系中对象的扩展功能
  |-- 接口的出现避免了单继承的的局限性
  |-- 抽象类被继承,是体现了谁是谁的一种  is a
  |-- 接口可以被实现,是体现了一种  like a关系

9. 接口中的多继承
  |-- 接口与类之间是实现关系,接口与接口之间是继承关系

10.多态
  |-- 一个事物具备的多种形态(函数就出现过多态性)
  |-- 动物,猫,狗实例
  |-- 多态性的代码体现 父类的引用指向自己的子类对象
  |-- 好处,提高的程序的扩展性,后期的维护性
  |-- 前提是子类重写父类抽象方法
  |-- 弊端:前期只能调用父类中的方法,而不能调用子类特有方法,前期不知道子类是谁

11.多态思想
  |--以前是建立对象,指挥对象做事情
     如果对象过多,指挥就麻烦了,所以找到对象的共性类型
     指挥这个共性类型就可以了

12.多态的转型
  |-- 父类引用指向子类对象时,子类被自动提升为了父类类型,向上转型
  |-- 要想使用子类的特有方法,需要进行强制类型转换 向下转型
  |-- 强制类型转换中的异常 ,类型转换异常
  |-- 多态中判断类型关键字 instanceof

13.接口和多态案例
  |-- 电脑主板中的PCI插槽
  |-- 数据库的操作

14.多态中的细节(记住结论)
  |-- 多态中成员变量
      编译时期,参考引用类型中是否有定义的变量
      运行时期,参考引用型变量
  |-- 多态中成员函数
      编译时期,参考引用类型中是否有调用的方法
      运行时期,参考对象所属的类中是否有调用的方法
  |-- 多态中静态成员函数
      编译时期,参考引用类型中是否有调用的方法
      运行时期,参考引用型变量是否有调用的方法

15.模板方法设计模式
  |-- 当功能一部分明确,一部分不明确的时候
      将不明确的地方暴露出去,延迟到子类去完成
      这就是我们解决不明确功能的思想
      这个思想就是模板方法设计模式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值