zoukankan      html  css  js  c++  java
  • 《Java编程那点事儿》读书笔记(三)——static,this,抽象类,接口和包

    1. static

      1)静态变量:Java虚拟机为静态变量开辟单独的存储空间,所以所有的对象内部的静态变量在内存中都指向同一个地址,那么不管哪个对象改变这个成员变量,所有对象中该成员变量的值都发生变化。调用的方法一般为

    类名.成员变量(常量)

      2)静态方法:静态方法内部只能使用静态的成员变量,调用的方法:

    类名.方法名(参数)

     3)静态代码块:静态代码块在该类第一次被使用时执行一次,以后再也不执行。例如:

    public class StaticBlock{
        static{
            System.out.println("静态代码块!");
        }
    }

    2.final

      1)final数据:final修饰的数据时常量,只能赋值一次,通常声明为static,例如:

    public final static int MALE = 0;

      2)final方法:final修饰的方法不能被覆盖。

      3)final类:不能被继承。

    3.this

      1)引用成员变量

    public class ReferenceVarible{
        private int a;
        
        public void setA(int a){
            this.a = a;
        }
    }

      2)引用构造方法:在类中只写一个构造方法,然后其他的构造函数用this引用这个构造方法

    public class ReferenceVarible{
        private int a;
        
        public ReferenceVarible(int a){
            this.a = a;
        }
    
        public ReferenceVarible(){
            this(0);
        }
    }

    在使用时this只能出现在构造方法内部的第一行可执行代码。

    4.super

      1)引用父类构造方法

    public subClass(int a){
        super(a);
    }

    以上代码调用父类有一个参数的构造函数。

      2)引用父类成员方法:如果子类覆盖了父类的方法,还是想要调用父类的方法,可以用super修饰,例如:

    super.test();

    5.抽象类

    public abstract class A{
        public A(){}
    }

    抽象类不能使用自身的构造函数创建对象,但抽象类可以声明对象,默认都是null,无法调用抽象类中的非静态属性和非静态方法。

    6.抽象方法

    public abstract void test();

    抽象方法没有方法体,所在的类必须为抽象类,强制子类覆盖抽象方法(类似制定了某种房屋的框架,强制遵守这个框架并实现细节)。

    7.接口——常量数据+抽象方法

    接口是一个规范,比如每家都有红烧肉,但是每家的红烧肉的味道都不一样,红烧肉就是接口,每家的红烧肉就是对接口的实现。

    接口中声明的方法在实现的时候是必须被调用的,比如虽然每家的红烧肉味道不一样,但是都要有肉,而且是红烧的,然后就不管怎么做了,哪怕你做的是甜的,我也叫他红烧肉

    接口的定义

    访问控制符 interface 接口名 [extends 父接口名1,父接口名2......]{
        常量声明
        方法声明
    }
    public interface USB{
        public static final int V = 5;
    
        public abstract byte[] readData();
        public abstract void writeData(byte[] data);
    }

    接口的实现

    访问控制符 [修饰符] class 类名 [extends 父类名] implements 父接口名1,父接口名2......
    public class Computer implements USB{
        int memorySize;
        
        public byte[] readData{
            //读数据逻辑
        }
    
        public void writeData{
            //写数据逻辑
        }
    }

    8.包

      1)打包:将声明的类放入包中,即为类指定包名。

    package 包名1[.包名2[.包名3......]];

    package.game.bubble.ui就对应路径gameubbleui

    打包的语句必须是程序代码中第一行可执行代码

    打包的语句最多只有一句。

      2)JDK编译和运行打包

    javac -d 类文件路径 源代码名称
    //文件名:PackageClass.java
    package chapter8;
    public class PackageClass{
      //类内部的代码
    }

    javac -d d: PackageClass.java

    上述命令将PackageClass类编译成class,并将生成的class文件D盘根目录下。运行这个类:

    java 包名.类名
    java chapter8.PackageClass

      3)引入包

    import 包名1.[.包名2[.包名3......]].类名|*;

    import只引入当前包下面的类,而不引入该包下面的子包里面的类。

  • 相关阅读:
    观察者模式
    如何通过反射创建对象?
    java8新特性
    idea 常用快捷键--标蓝
    java多线程基础篇-01
    zookeeper单机版及操作
    redis和jedis常用api
    Mac连接服务器
    redis基本介绍及安装01
    docker 安装mobsf及部分命令01
  • 原文地址:https://www.cnblogs.com/sunshineatnoon/p/3817504.html
Copyright © 2011-2022 走看看