美文网首页
Java基础随记2

Java基础随记2

作者: YuHChen | 来源:发表于2017-01-21 17:56 被阅读0次

Java 基础随记


- Java中的this

this是指当前对象自己。在写一个方法的时候,如果想在方法内部获得对当前对象的引用就可以用this。this表示对“调用方法的那个对象”的引用。也就是说this指的是方法所属的类的对象的引用。

  • 调用当前对象中的成员变量或方法:this.当前对象中的成员变量或方法
  • 调用当前对象的构造方法:this(参数)

- 内部类

  • 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;

  • 内部类的方法可以直接访问外部类的所有数据,包括私有的数据。

  • 例子:

      //外部类HelloWorld
      public class HelloWorld {
    
       // 内部类Inner,类Inner在类HelloWorld的内部
      public class Inner {
      
          // 内部类的方法
          public void show() {
              System.out.println("welcome to imooc!");
          }
      }
    
      public static void main(String[] args) {
      
          // 创建外部类对象
          HelloWorld hello = new HelloWorld();
          // 创建内部类对象
          Inner i = hello.new Inner();
          // 调用内部类对象的方法
          i.show();
      }
    
      }
    

- Java 中的静态内部类

静态内部类是 static 修饰的内部类,这种内部类的特点是:

  1. 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

  2. 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

  3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

  • 代码:

      //外部类
      public class HelloWorld {
    
      // 外部类中的静态变量score
      private static int score = 84;
      private  int scoree = 23;
      // 创建静态内部类
      public static  class SInner {
          // 内部类中的变量score
          int score = 91;
      
          public void show() {
              // 只能访问score,不能访问scoree
              System.out.println("访问外部类中的score:" + HelloWorld.score );
              System.out.println("访问内部类中的score:" + score);
          }
      }
    
      // 测试静态内部类
      public static void main(String[] args) {
          // 直接创建内部类的对象
          SInner si = new SInner();
          // 调用show方法
          si.show();
      }
    
      }
    

继承

  • 父类的private方法是无法被子类访问或覆盖的
  • 创建一个子类对象时,程序内部执行顺序为:
    • 父类属性初始化
    • 父类构造方法(super();
    • 子类属性初始化
    • 子类构造方法
  • super
  • 子类的构造过程必须调用父类的构造方法
  • 子类的构造方法中如果没有显示调用父类构造方法,则默认调用无参构造
  • 显示调用父类构造方法必须在第一行
  • 如果没有显示调用,而父类又没有无参构造方法,编译时则报错

Java中的final和static

- final

  • 声明 final 字段有助于优化器作出更好的优化决定,因为如果编译器知道字段的值不会更改,那么它能安全地在寄存器中高速缓存该值。
  • final 字段还通过让编译器强制该字段为只读来提供额外的安全级别。
  • final可以修饰变量、方法及类;
  • 当定义一个final变量时,jvm会将其分配到常量池中,程序不可改变其值,相当于一个常量,初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中,不能不赋值;
  • 当修饰一个方法时,该方法在子类中将不能被重写;
  • 当修饰一个类时,该类不能被继承。

- static

  • 静态成员或类成员:它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。

  • 静态方法或类方法:

  • 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。


  • 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。


  • 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。


  • Java 中的 static 使用之静态初始化块

    • 例子:
    • 结果:
    • 结论:
      1. 程序运行时,静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法
      2. 静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

- instanceof语句

  • A instanceof B
  • 用于判断对象A是不是B类型,进而判断是否可以装化。

- 抽象类abstract

  • 应用场景:
  • 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法
  • 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类做为子类的模板,从而避免子类设计的随意性
  • 作用:限制规定子类必须实现某些方法,但不关注实现细节
  • 使用规则:
  1. abstract定义抽象类
  2. abstract定义抽象方法,只有声明,不需要实现
  3. 包含抽象方法的类是抽象类
  4. 抽象类中可以包含普通的方法,也可以没有抽象方法
  5. 抽象类不能直接创建,可以定义引用变量抽象方法没有方法体以分号结束
  • 代码例子:
  • 父类:


  • 则子类为:(自动添加父类中的方法)


  • 由例子可知可用于写模板

相关文章

  • Java基础随记2

    Java 基础随记 - Java中的this this是指当前对象自己。在写一个方法的时候,如果想在方法内部获得对...

  • Java基础随记1

    Java基础随记 赋值运算符 比较运算符 逻辑运算符 条件运算符 条件运算符( ? : )也称为 “三元运算符”。...

  • Java随记:基础语法

    Java 基础语法 简介: java程序可以被认为是一系列对象的集合,并通过调用彼此的方法来协同工作 一、了解...

  • Java基础随记3

    Java基础随记 - Java中的异常处理 - String 一旦一个字符串在内存中创建,则这个字符串将不可改变。...

  • Java学习规划

    概述 本文档主要说明java学习计划。 Java基础(2周) java零基础入门到精通(2019版) Java基础...

  • 记录一些书籍

    JAVA 基础 《Java核心技术·卷1:基础知识》《Java核心技术 卷2:高级特性》《Java8 实战》 并发...

  • Java全套学习资料

    Java基础 1-1 就业课(2.0)-Java基础语法 第1节java运行环境 第2节HelloWorld案例 ...

  • 开课吧大数据高级开发工程师 百度网盘分享

    课程大纲: java的基础课程(额外提供)阶段2:linux基础阶段3:java基础阶段4.5:mysql阶段6:...

  • java学习路径

    一、java基础知识 (30天) 1. 语言基础, java基础,环境变量 2. 语言基础, 进制转换 3. 语言...

  • Java基础总结

    一、Java基础认识 1、基础知识 1)JavaSE——>JavaEE、JavaME 2)Jdk(java工具、J...

网友评论

      本文标题:Java基础随记2

      本文链接:https://www.haomeiwen.com/subject/jagibttx.html