重新学习java(四)

java中的对象

java中的对象又称实例。
java中将实现对象中的信息称为属性(全局变量),将现实对象中的功能称为方法
在这里插入图片描述

java中的类

java语言中把一组对象中相同属性和方法抽象到一个java源文件就形成了类。

定义类

定义一个类:

  1. 定义类名
  2. 定义类的属性
  3. 定义类的方法
    在这里插入图片描述
public class Dog{
  String breed;
  int age;
  String color;
  void barking(){
  }
 
  void hungry(){
  }
 
  void sleeping(){
  }
}

一个类可以包含以下类型变量:

**局部变量:**在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
**成员变量:**成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
**类变量:**类变量也声明在类中,方法体之外,但必须声明为static类型。
一个类可以拥有多个方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog类的方法。

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:

public class Puppy{
    public Puppy(){
    }
 
    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}
创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。
public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
   public static void main(String[] args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}
类与对象
  • 类是创建对象的模板,确定对象将会拥有的属性和方法。
  • 类是对象的抽象化;对象是类的具体化。
  • 类是一种数据类型,是对象的数据类型(不同于int等基本类型:类具有方法)

方法与重载

如何定义方法

方法用于定义类的某种行为(或功能),其语法结构如下:
访问控制符 【修饰符】 返回类型 方法名 (【参数】){ //方法体 }

public void sayHello(){
	System.out.println("hello");
}
private static int add(int x,int y){
	return x+y;
}
访问控制符

方法中的访问控制符用于限制方法在其他中的适用范围
访问控制符分为四种:public,protected,友好的,private
在这里插入图片描述

修饰符

在这里插入图片描述在这里插入图片描述

返回值类型

方法返回引用数据类型的数据,则返回值类型必须是返回数据所属的数据类型或者父类。

方法名

命名规则:首字母必须小写,如果有多个单词组成,从第二个单词开始首字母大写;方法名一般由一个动词或者动名词构成。

动态参数

在这里插入图片描述

方法重载在这里插入图片描述
代码块在这里插入图片描述
变量分类

在这里插入图片描述
如果未对成员变量设置初始值,系统会自动分配;

  • int = 0
  • boolean = false
  • 自定义类型 = null
局部变量
  • 如果局部变量的名字与全局变量名字相同,则在局部变量的作用范围内全局变量被隐藏。
  • 如果在局部变量的作用范围内访问该成员变量,则必须使用关键字this来引用成员变量。
  • 局部变量在使用前必需显式初始化或赋值,局部变量没有默认值。
  • 声明局部变量时,数据类型前除了final外不允许有其他关键字,即定义格式为:[final] 数据类型 变量名 = 初始值;
关键字static
成员变量
  • static修饰的成员变量称为类属性(又称静态变量):类成员的值在所有对象之间共享;
  • 没有static修饰的成员变量称为实例属性(又称非静态变量):变量值只属于单个对象;
方法
  • static修饰的方法称为类方法(又称静态方法):此种方法被所有该类的对象共享;jvm加载类时为其分配入口地址;可以由所在类创建的对象或类名来调用,推荐使用类名直接调用;
  • 没有static修饰的方法称为实例方法(又称非静态方法):此种方法对所有该类的对象都是独立的;jvm执行创建对象代码是为其分配入口地址并且只分配一次;只能使用对象来调用;
代码块
  • static修饰的代码块称为静态代码块:jvm加载类时该类型代码块执行并且只执行一次;
  • 没有static修饰的代码块称为非静态代码块:jvm执行创建对象代码时执行并且创建一个对象执行一次;
注意

在这里插入图片描述

构造方法

在这里插入图片描述

对象初始化过程

在这里插入图片描述
用new创建并初始化对象步骤:

  • 给对象的实例变量(非“常量”)分配内存空间,默认初始化成员变量;
  • 成员变量声明时的初始化
  • 初始化块初始化(又称为构造代码块或非静态代码块);
  • 构造方法初始化
    例题:
    在这里插入图片描述
    输出为:null正在做作业,刘颖正在说话;null正在做作业,null正在说话;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值