zoukankan      html  css  js  c++  java
  • JAVA基础知识总结:八

    面向对象语言的三大特性;封装、继承、多态


    一、面向对象语言特性之封装
    1.什么是封装?
    一个类中某些属性,如果不希望外界直接访问,我们可以将这个属性作为私有的,可以给外界暴露出来一个访问的方法
    使用封装解决私有化的问题

    私有化使用private关键字

    2.private的使用
    1>修饰成员变量,表示这个成员变量只能在当前类中被访问
    2>修饰成员方法,表示这个方法只能在当前类中被调用

    3.get/set方法
    对于private修饰的成员变量,如果要在外界使用,则使用get和set方法进行取值和赋值


    语法
    get------获取值
    访问权限修饰符 返回值类型(成员变量的类型)getXxx() { 例如:public int getAge() {}
    }

    set-----赋值
    访问权限修饰符 void setXxx(成员变量类型 变量名称) { 例如:public void setAge(int a){}
    }


    4.this关键字

    this表示的是对当前对象的引用

    1>this.属性:访问本类中的成员变量
    总结:一般情况下,当私有变量的set方法中参数名称和成员变量相同的时候,使用this进行区分,有参构造方法中也是同样的道理(当局部变量名和成员变量名相同时,this表示的是成员变量名)

    2>this.方法:访问本类中的方法

    3>this():访问本类中的构造方法

    注意:a.this()只能写在构造方法中
    b.this()只能出现在其他构造方法中执行语句的第一行
    c.this()具体调用的是哪个构造方法,取决于所传的参数

    5.static关键字
    1>静态成员变量
    由static修饰的成员变量被称为静态成员变量
    语法:访问权限修饰符 static 数据类型 变量名称;

    特点:
    a.静态成员变量是属于类的,通过 类名. 的方式和 对象.的方式都可以进行访问
    b。静态成员变量的声明出现在实例之前(静态成员变量随着类的字节码文件加载到JVM中,且只会加载一次)
    c.使用类和不同对象访问的静态成员变量都属于同一块内存空间


    2>静态方法

    特点:
    a.静态方法是属于类的,通过类名.的方式访问
    b.静态方法优先于实例被加载到JVM中,与静态成员变量类似
    c.在同一个类中,静态方法只能访问静态方法


    什么时候使用静态?
    当所有的对象需要共享数据的时候,就定义成静态成员变量----静态成员变量
    对于一些普遍或者需要多次使用的功能,我们将它抽取成方法的时候就声明成静态方法


    3>静态代码块
    什么是代码块?
    在类中独立存在的语句块,可以有多个,位置随意{}
    什么是静态代码块?
    被static修饰,直接出现在类中的语句块
    语法:static {
    //执行语句

    }

    用法:a.静态代码块用于为类的属性进行初始化
    b.静态代码块是属于类的,随着类的加载而运行,每个静态代码块只会执行一次,静态代码块的执行优先于main函数

    扩展:
    4>普通代码块:在方法或者语句中出现的{}
    普通代码块和一般语句的执行顺序由他们在代码中出现的顺序决定

    5>构造代码块:直接在类中定义,且没有加static关键字的代码块


    6。单例
    单例是一种设计模式,
    什么是设计模式?
    前人总结的用来解决特定问题的方案
    Java中有23中设计模式,常用的有单例设计模式,工厂设计模式

    什么是单例设计模式?

    在程序运行过程中,确保某一个类只有一个实例(对象),不管在哪个模块获取这个类的对象,获取到的都是同一个对象

    实现方式:
    a.懒汉式(饱汉式)

    b.饿汉式

    区别:a.懒汉式在一定程度上节约内存,但是数据是不安全的(线程不安全)
    b.饿汉式,不节约内存,但是数据比较安全


    7.包(package)
    用来组织文件而存在的,和文件夹的功能相同
    语法:package xx.yy.zz ---->class文件的存放位置

    编译命令:javac -d . Java源文件名称(只要类中使用了package关键字)

    注意:a.类编译生成的class文件存在于对应的包下
    b。一般情况下,不同的类编译生成的class文件必须存在于同一个包下才能相互访问
    c.当不同类的class文件存在于不同包下的时候,要相互访问,则使用import,格式:import 包名.文件名称


    每天多努力一点,你将会变得更好。
  • 相关阅读:
    elasticsearch
    Python数据预处理(sklearn.preprocessing)—归一化(MinMaxScaler),标准化(StandardScaler),正则化(Normalizer, normalize)
    Pandas的Categorical Data
    详解FindBugs的各项检测器 .
    Oracle存储过程基本语法介绍
    关于MySQL的SLEEP(N)函数
    MYSql存储过程的作用及语法
    唯一约束 和 唯一索引 有什么区别?
    MySql避免重复插入记录
    [Ljava.lang.String和java.lang.String区别
  • 原文地址:https://www.cnblogs.com/lidar/p/7743178.html
Copyright © 2011-2022 走看看