• 继承 extends

    • 子类的共性代码都是继承自父类的,每个子类只要写自己特有的代码
    • class 子类 extends 父类
    • 继承提高了代码的复用性,提供了多态的前提,但是不要为了某个功能去继承
    • 子类不是父类的子集,而是对父类的扩展
    • 规则:子类不能直接访问父类中private的成员变量和方法
    • 只支持单继承,不能多重继承,可以多层继承。子类只能有一个父类
  • 方法的重写override
    • 子类重写父类的方法,只是重新编写方法体代码,如果父类的方法是public ,子类重写时就不能使用缺省以下的修饰符
    • alt+/ 就能找到重载的方法
    • 方法的重载是一个类可以有多个同名的方法 ,而方法的重写时子类可以重新写父类的方法,覆盖父类的方法
  • super
    • 用于访问父类中定义的属性,调用父类中定义的成员方法,在子类构造方法中调用父类的构造器
    • 使用super,子类可以调用所有的父类层级
    • 子类所有的构造器默认都会访问父类中空参数的构造器
    • 当父类没有空参数的构造器时,子类构造器必须通过super或者this指定调用本类或者父类构造器,且放在首行
    • 在父类只有有参构造可以使用时,子类必须显示构造一个构造器来掉父类的有参构造
  • 多态
    • 两种体现 重载和重写
    • 对象的多态--可以直接应用在抽象类和接口上
    • 父类类型的引用可以指向子类的对象--向上转型
  • object
    • object类是java类的根父类-基类
    • 未使用extends未指明父类,就是继承object类
    • 设置形参可以使用 object obj,可以确定传过来的是一个类,但是不确定是什么类
    • p.toString() 返回反映这个对象的字符串
  • 对象类型转换casting
    • 自动转换类型:小的数据类型转换成大的数据类型
    • 强制类型转换:把大的数据类型强制转换成小的数据类型
      • 如 int i=(int)1200L;
    • 父类可以自动转换成子类类型,但是子类得强制转换为父类
  • ==和equals
    • ==是基本类型比较值,值相等就为true,如果是比较对象,必须指向同一个对象才为true。且两遍的数据类型必须兼容否则出错
    • equals 只能比较引用类型,看是否指向同一个对象
    • equals在对于file,string,date和包装类时,只比较类型和内容,而不考虑是否是同一个对象
    • 用字面量创建对象时,只在常量池创建一个对象;而用new时,常量池有对象,堆中也有对象,字面量比new省内存
  • 包装类--需要后续完善 #完善
    • 针对八种基本类型的引用类型-包装类
    • jdk1.5以后支持自动拆箱装箱
    • 主要是为了基本数据类型与字符串直接的转化
    • 基本数据类型转字符串
      • int i=Integer.parseInt("123"); 数据类型转转字符串
  • static 静态
    • 实例变量,只有实例化之后才能使用,属于实例化对象的一部分,不能共用
    • 类变量不用实例化,直接类名.属性名就可以使用,是类的一部分,被所有这个类的实例化对象所共享,也叫静态变量
    • if(s !=null && !s.equals(""); --判断S不是空字符串
    • 在开发中多次使用的方法,把他抽象成一个工具类的方法
    • 静态方法,类加载以后就能使用,并且优于对象存在,不需要new,在static方法中不能使用this
    • 单例设计模式
      • 设计模式就是在我们实际编程过程中,逐渐总结出的一些解决问题的讨论套路
      • 单例模式就是只有一个实例(实例对象)
      • 构造器中有大量的代码,且new一次对象耗时很长占用很多资源,比较实用单例模式
      • 饿汉式的单例
        • 是在类加载之后,还没有人调用时就先new好一个对象,以后不论谁调用getInstance方法时都直接放回这个new对象
        • 构造私有化,调用这个类的人就不能直接使用new来创建对象 private 类名(){}
        • private static 类名 a =new 类名(); 私有的类变量
        • public static 类名 getInstance (){
        • return a;}
        • 使用时只能 类名 a= 类名.getInstance(); 都使用一个对象
      • 懒汉式单例
        • 最开始对象时null,只有第一个调用才new一个对象,之后所有调用我的都用这个对象
        • 构造私有化,调用这个类的人就不能直接使用new来创建对象 private 类名(){}
        • private static 类名 a =null;
        • public static 类名 getInstance (){
        • if (a ==nll) a =new 类名();
        • return a;}
      • 懒汉式和饿汉式的区别就是什么时候new对象。懒汉式存在线程安全,在多线程时可修复
  • 初始化块
    • 在程序的运行过程中,非静态代码块每次new对象都有重新执行,而静态代码块只执行一次
    • 匿名内部类?#完善
  • final
    • final的类不能被继承,且不能被子类重写,final标记的变量也被称为常量,名称约定大写。
    • final修饰的变量必须显示赋值,且不能再改变。final static 一起修饰变量就是全局常量
  • 抽象类 abstract class
    • 用abstract 修饰类时,这个类叫做抽象类,修饰方法时,这个方法叫做抽象方法(抽象方法只有方法的声明,没有方法的实现,以分号结束 :abstract int abstractMEthod(int a);
    • 含有抽象方法的类必须被声明为抽象类
    • 抽象类不能被实例化,被继承时子类必须重写父类的抽象方法,并提供方法体,若没有重写全部的抽象方法,子类仍为抽象类
    • final 和抽象类是冲突的。final是最终,它修饰的类是最终类不能被继承,而抽象类如果想要被使用,就必须继承抽象类,实现哪些抽象的方法
    • 抽象类可以有构造方法啊,但是不能直接创建抽象类的实例对象
    • 模板方法设计模式
      • 抽象类作为多个子类的通用模板,子类在抽象类基础上进行扩展改造。
  • 接口 interface
    • java不支持多重继承,有了接口就能实现多重继承,implements
    • class 类名 implements 接口{} 一个类可以实现多个接口(implements A接口,B接口),接口也可以继承其他接口
    • 接口中所有成员变量都默认是由public static final(全局常量)修饰,方法都是默认由public abstract修饰,且没有构造器
    • 如果类没有实现接口的所有方法,这个类就要定义为抽象类
    • 如果类既有继承又有实现,就要先写extends,后写implements
    • 如果父类老是在改,基于这个父类的子类等都会受到影响,在需要给父类增加方法时,就不能直接在父类上修改,只能新建接口,在接口上扩展,需要的子类自行实现接口 --为啥不用抽象而要用接口
    • 抽象类是对一类事物的高度抽象,既有属性又有方法,而接口是对方法的抽象,也就是对一系列对象进行抽象。对一类事物进行抽象应当使用抽象类,而对一系列动作抽象就要使用接口,对使用这些动作的类使用抽象动作就可以了。
  • 工厂方法 FactoryMethod
    • 通过工厂把new对象给隔离了,通过产品的接口可以接受不同实际产品的实现类,实例类名的改变不影响其他代码
    • BWM b3=new BWM3Factory().productBWM();  #不懂
  • 内部类
    • 外部的类想要用自己内部类的方法,得先new内部类的对象 new 类名().方法名()
    • 如果内部类是static,就不能使用外部类的非static得成员
    • 内部类主要是为了解决java不能多重继承的问题

新年在家学java之基础篇-高级类的特性的更多相关文章

  1. 新年在家学java之基础篇--循环&数组

    因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...

  2. 新年在家学java之基础篇-参数&修饰符&构造器

    可变参数 不知道可能给方法传递多少个参数时使用这个方法 public void printInfo (String[] args) --可以定义一个数组,在调用这个方法适合赋值给一个数组 public ...

  3. 新年在家学java之基础篇--类&方法

    面向对象 面向对象OOP,面向过程POP 面向对象三大特征 封装 继承 多态 类 类由属性(对应类中的成员变量)和行为(成员方法)来构成 类的成员变量可以先声明,不用初始化,有默认值 方法名称如果多个 ...

  4. 小白学Docker之基础篇

    系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...

  5. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  6. java 线程基础篇,看这一篇就够了。

    前言: Java三大基础框架:集合,线程,io基本是开发必用,面试必问的核心内容,今天我们讲讲线程. 想要把线程理解透彻,这需要具备很多方面的知识和经验,本篇主要是关于线程基础包括线程状态和常用方法. ...

  7. java面试基础篇(三)

    1.Q:ArrayList 和 LinkedList 有什么区别? A:ArrayList查询快!LinkedList增删快.ArrayList是基于索引的数据接口,它的底层是数组.空间占用相对小一些 ...

  8. JDBC-使用Java连接数据库-基础篇

    这是小主第一次写Java连接数据库博客,初学Java之时,Java连接数据库是我最头疼的,不过经过一个月的学习,也差不多略有收获,所以给大家分享一下. Java连接数据库大约需要五大步骤: 创建数据库 ...

  9. Java经典基础与高级面试36题和答案

    1.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实 ...

随机推荐

  1. PAT Advanced 1072 Gas Station (30) [Dijkstra算法]

    题目 A gas station has to be built at such a location that the minimum distance between the station an ...

  2. 使用TestNG-xslt美化测试报告

    用TestNG测试后,自动会生成html的测试报告,不过相信大家都有感觉,自动生成的测试报告太难看了,所以我们又用了ReportNG来美化它.在 这里给大家再介绍一下比reportNG还要稍稍美观一点 ...

  3. CCCC L3-013. 非常弹的球

    题意: 刚上高一的森森为了学好物理,买了一个“非常弹”的球.虽然说是非常弹的球,其实也就是一般的弹力球而已.森森玩了一会儿弹力球后突然想到,假如他在地上用力弹球,球最远能弹到多远去呢?他不太会,你能帮 ...

  4. EUI库 - 9 - 数据集合 - 数据容器

      DataGroup 设置一个数据源 自动创建内部所需的对象 来完成数据展示   还要设置单条数据的模板  叫ItemRenderer   继承关系 eui.List  eui.ListBase e ...

  5. 19 01 15 js 尺寸相关 滚动事件

    尺寸相关.滚动事件 1.获取和设置元素的尺寸 width().height() 获取元素width和height innerWidth().innerHeight() 包括padding的width和 ...

  6. hdfs 删除和新增节点

    最近发现hdfs的一个问题,每当集群开启的时候,有一个节点上的可用空间就一直在减少,并且速度很快,发现是data目录下的dncp_block_verification.log.curr文件在一直变大, ...

  7. Spring(5) -(14) pointcut 语法

    AOP的规范本应该由SUM公司提出,但是被AOP联盟捷足先登.AOP联盟指定AOP规范,首先就要解决一个问题,怎么表示切入点,也就是在哪些方法上增强(where) AspectJ 是一个面向切面的框架 ...

  8. vmware桥接模式-无法内网通-克隆机要删除的文件-ssl

    网卡太多自动模式有时候无法正常通信需要绑定外部网卡 rm /etc/udev/rules.d/-persistent-ipoib.rules vmware报错 Microsoft Runtime DL ...

  9. spring boot 环境配置(profile)切换

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  10. spring boot rest 接口集成 spring security(2) - JWT配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...