【类和对象、构造方法、this关键字、static关键字、访问修饰符、包相关 】详解

类的定义

类的定义:

 类 是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等), 哪些功能(用来干啥),
 描述完成后计算机就可以识别了
// 创建类
 class ClassName{
           field; // 字段(属性) 或者 成员变量
           method; // 行为 或者 成员方法
  }
   类中包含的内容称为类的成员。
   属性主要是用来描述类的,称之为类的成员属性或者类成员变量。
   方法主要说明类具有哪些功能,称为类的成员方法。

ps:类名注意采用大驼峰定义

构造方法

构造方法:1.类中的构造方法必须和类名相同,(alt+insert快捷生成)
         2.没有返回值类型(不等于Void)
         3.构造方法可以重载,在产生对象时,由编译器自动调用构造方法产生对象,
         4.并且在整个对象的生命周期内只调用一次
         
 作用:产生对象,对类的属性进行初始化赋值
 
 注意事项:
      自己定义过构造函数,编译器不再产生默认的无参构造。若要使用,需要自己定义无参构造
      若没有自己定义,编译器自己生成默认的无参构造。
      
 构造方法调用时背后内存的变化情况--->JVM运行细节
      a)JVM会判断当前要产生的Student对象所在的Student类是否被加载到JVM中(Student.class),若还没加载,
      先加载类(Student.class)
      b)new关键字,先分配对象的内存空间 (到底开辟多大,要看这个对象内部包含具体成员变量有多少,
      就开辟多大空间)
      c)处理并发线程安全问题(JVM考虑多线程问题)
      d)为分配的空间进行属性初始化操作

this关键字

this 关键字 :
1.修饰属性  表示类中的成员变量
  this.属性名
2.修饰方法
  a)this.方法名
  b)this()表示调用类中的构造方法
          ①this调用构造方法必须放在构造方法的首行调用
          ②对构造方法的调用比可以成环装,必须是线性
3.表示当前对象的引用
  当前是通过哪个对象调用的属性和方法,就表示那个对象

static 关键字

    无论static修饰的是啥,看见static,和对象无关,属于类固有的作用域既有属性也有方法
    
    1.static修饰类中的属性,称之为类的静态属性/类属性!存储在JVM方法区
      类中所有常量和静态变量放在方法区,共享同一个方法区
      直接使用类名称访问静态变量和常量
      在方法中不可以定义静态变量
      
    2.static修饰类中的方案,称之为类方法,和对象无关,只能直接使用类中的静态方法和静态属性
    
    3.不能直接作用于外部类,可以修饰内部类

程序就近原则

从调用处向上寻找最近的同名变量使用

对象的定义

 对象:定义了一个类,就相当于在计算机中定义了一种新的类型,用类类型创建对象的过程,称为类的实例化,
 实例化出来的就是对象

ps:
1.new 关键字用于创建一个对象的实例.
2.使用 . 来访问对象中的属性和方法.
3.同一个类可以创建对个实例.

访问修饰符

访问修饰符:
    java中有4个关于权限的关键字:权限从小到大:
       private(当前类的内部可见)
       < default(咱们不要写,默认访问权限,当前包内部可见,子包不可见)
       < protected(继承访问权限,在不同包的父子类之间可见
       < public (公共访问权限,随意使用完全公开)

       private不可以修饰外部类,类是创建对象的模版,定义private则不可以实例化对象,没有意义
           但是可以修饰内部类,成为所有内部类

代码块

直接用{}括起来的代码,称之为代码块

在java中根据代码块出现的位置以及关键字不同,分为四种:

   1.普通代码块
       在方法中(成员/静态都可)直接使用 {}
           普通代码块定义的局部变量,出了作用域{}就会被销毁
           解决方法中局部变量名称相同的情况
           
   2.构造快
       直接在类中,不加任何关键字,直接使用{}
           构造块优先于构造方法执行,
           每当产生该类对象时,就会调用一次构造块
       在编译后的class文件,会将说有的构造代码块和构造方法合并在一起,而且构造代码块会写在构造方法之上
       无论是构造方法还是构造块,都是为了初始化对象
       
   3.静态块
      直接定义在类中,使用static修饰的代码块
       在类加载时执行,和对象无关,无论有多个对象产生,都  只  会执行一次,优先于构造块(构造方法)
       在主类中的静态块,优先于主方法 执行

       为了类中的静态变量的初始化,以及一些类加载信息(SpringIoc容器)
       
   4.同步代码块
       在定义方法中使用关键字sychronized修饰的代码块

导包相关

	 包访问权限 当前一级文件夹可见
       java中类的全程是包名.类名,用package声明,可以在 不同的包声明 同名的类

       包的导入:
           1.全名使用类 : java.util.Date date = new Date();
           2.import 导入某个包中的某个具体类,无法直接导入一个文件夹 :import java.util.Date;
               使用一个包下的多个类,则使用 * 通配符,导包
               不是一次性全部导进去,而是需要那个导那个
               import java.util.*
               使用通配符 ,如果同一个类中使用多个不同的包的同名类,就会冲突
               出现这种情况则需要 显示导入  包名.类名

		静态导入:
    		import static java.lang.Math.*;
   			将Math这个类的所有静态方法属性都导入,再使用方法就直接调用方法名

		JDK常见的包:
   		  1.java.lang  系统常用的基础类:String,Object,Math,JDK1.1之后自动导入
 		  2.java.lang.reflect反射开发包
 		  3.java.util java提供的开发工具包.集合类,Scanner
	      4.java.sql 数据库开发相关
	      5.java.io io开发包(文件)
	      6.java.net 网络编程开发包

使用类来定义洗衣机

public class WashMachine {//使用class关键字定义类
    //属性:
    //品牌
    public String brand;
    //型号
    public String type;
    //重量
    public double weight;
    //长宽高
    public double length;
    public double width;
    public double height;
    //颜色
    public String color;

    //方法:
    //洗衣服
    public void washClothes() {
        System.out.println("Washing clothes...");
    }

    //甩干
    public void dryClothes() {
        System.out.println("Drying clothes...");
    }

    //定时关闭
    public void closeTime(int time) {
        System.out.println("delay a " + time + " will close machine");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值