Java基础随记2

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. 抽象类不能直接创建,可以定义引用变量抽象方法没有方法体以分号结束
  • 代码例子:
  • 父类:


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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,571评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,629评论 0 11
  • 本文主要是慕课网 Java入门第二季 这一课程的学习笔记。 1. 类和对象 1. 类的重要性:所有Java程序都以...
    evansyangs阅读 325评论 0 1
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,209评论 0 2
  • 当遍地是iPhone的时候,你是否有时候想去改变点什么,是否相与众不同,现在动手党们的福利来了,将自己的iPhon...
    科技圈阅读 1,265评论 1 1