java 面向对象- 类、对象及类成员

类及类的成员

一、类和对象的思想概述

  • 类(Class)对象(Object) 是面向对象的核心概念。
    • 类是对一类事物的描述,是抽象的、概念上的定义
    • 对象是实际存在的,该类事物的每个个体,因而也称为实例(instance)
  • ”万事万物皆对象
    • 可以理解为:类 = 抽象概念的人;对象 = 实实在在的某个人
    • 面向对象程序设计的重点是 类的设计
    • 类的设计,其实就是 类的成员的设计

二、Java 类及类的成员

  • 属性 :对应类中的成员变量

    Field = 属性 = 成员变量

  • 行为 :对应类中的成员方法

    Method = (成员)方法 = 函数

  • 构造器

    • 构造器的特征

      1. 它具有与类相同的名称
      2. 它不声明返回值类型(与声明void不同)
      3. 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
    • 构造器的作用

      创建对象; 给对象进行初始化

    • 构造器语法格式

      修饰符 类名 (参数列表) {

      初始化语句;

      }

    • 注意事项

      1. 根据参数的不同,构造器可以分为如下两类
        • 隐式无参构造器(系统默认提供)
        • 显式定义一个或多个构造器(无参、有参)
      2. java 语言中,每个类都至少有一个构造器
      3. 默认构造器的修饰符与所属类的修饰符一致
      4. 一旦显式定义了构造器,则系统不再提供默认构造器
      5. 一个类可以创建多个重载的构造器
      6. 父类的构造器不可被子类继承
    • 示例

      public class Person {
      	//属性 ,或者成员变量
      	String name;
      	boolean ismarried;
      	//无参构造器
      	public Person() {
      		
      	}
      	//带参构造器
      	public Person(String name,boolean ismarried) {
      		this.name = name;
      		this.ismarried = ismarried;
      	}
      }
      

1、类的语法格式

修饰符 class 类名{

属性声明;

方法声明;

}

举例

public class Person {
	//属性 ,或者成员变量
	String name;
	boolean ismarried;
	//无参构造器
	public Person() {
		
	}
	//带参构造器
	public Person(String name,boolean ismarried) {
		this.name = name;
		this.ismarried = ismarried;
	}
	//方法 或函数
	public void walk() {
		System.out.println("人走路--------");
	}
	public String display() {
		return "名字是"+name;
	}
	//静态代码块
	//在静态代码块中定义必须是静态变量
//	static {
//		name = "satic"; 
//		age = 17;
//		ismarried = true;
//	}
	//实例代码块
	{
		name = "实例";
		age = 17;
		ismarried = true;
	}
	int age;
	//内部类 (不推荐使用)
	class pet{
		
	}
}

2、创建 java 自定义类

步骤:

  1. 定义类(考虑修饰符、类名)
  2. 编写类的属性(考虑修饰符、属性类型、属性名、初始值)
  3. 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)

三 、对象的创建和使用

1、Java 类 与对象的关系

  • image-20200727191701820

  • image-20200727191119634-

  • 类是对象的模板,对象是类的实例

    一个类可以创建多个对象,同一个类的不同对象,结构相同,数据不同。

  • 类 = 属性 + 方法,(数据+对数据的操作)而属性描述的是状态,方法描述的是行为动作。

2、对象的创建

  • 创建对象的语法:类名 对象名 = new 类名();

  • 使用”对象名.对象成员“的方式访问对象成员(包括属性和方法)

3、类的访问机制

  • 在一个类中的访问机制 :类中的方法可以直接访问类中的成员变量。

    例外:static 方法访问非static,编译不通过。

  • 在不同类中的访问机制 :先创建要访问类中对象,在用对象访问类中定义的成员

4、对象的声明周期、及内存解析

待更新 、、、、

5、匿名对象

  • 我们也可以不定义对象的句柄,而直接调用这个对象的语法。这样的对象叫做匿名对象
    • 如:new person().shout();
  • 使用情况
    • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象
    • 我们经常讲匿名对象作为实参传递给一个方法调用。

四、属性和方法

1、访问修饰符

java 中,可以使用访问修饰符来保护对类、成员变量、成员方法和构造方法的访问。

Java 支持四种不同的访问权限

  • friendly (即缺省):在同一包内可见,不使用任何修饰符。适用对象:类、接口、变量、方法。

  • private :在当前类内可见。适用对象:变量、方法。注意 :不能修饰外部类

  • public:对所有类可见。适用对象:类、接口、变量、方法。

  • protected :对同一包内的类和所有子类可见。适用对象:变量、方法、注意:不能修饰外部类

    • 子类与基类在相同包中:

      被声明为protected的变量、方法和构造器能被同包中的任何其他类访问;

    • 子类与基类在不同包中:

      在子类中,子类实例可以访问其从基类继承而来的protected 方法,
      而基类实例不能访问的protected方法。

修饰符当前类同一包类子孙类(同一包)子孙类(不同包)其他包
publicYYYYY
protectedYYYY/NN
friendlyYYYNN
privateYNNNN

2、属性(field)

  • 属性(变量)的定义:

    • 语法格式

      修饰符 数据类型 属性名 = 初始化值 ;

      说明1: 修饰符

      ​ 常用的权限修饰符有:private、缺省、protected、public

      ​ 其他修饰符:static、final (暂不考虑)

      说明2:数据类型

      ​ 任何基本数据类型(如int、Boolean) 或 任何引用数据类型。

      说明3:属性名

      ​ 属于标识符,符合命名规则和规范即可。

  • 变量的分类

    • 成员变量

      1. 实例变量(不以static 修饰)
      2. 类(静态)变量(以static 修饰)

      在方法体外,类体内声明的变量称为成员变量。

    • 局部变量

      1. 形参(方法、构造器中定义的变量)
      2. 方法局部变量(在方法内定义)
      3. 代码块局部变量(在代码块内定义)

      在方法体内部声明的变量称为局部变量

    • 二者在初始化值方面的异同

      • 相同点:都有生命周期
      • 不同点:局部变量除形参外,均需显示初始化。
  • 成员变量(属性)和局部变量的区别

    成员变量局部变量
    声明的位置直接声明在类中方法形参或内部、代码块内、构造器
    修饰符private、public、static、final不能用权限修饰符修饰、可以用final修饰
    初始化值有默认的初始化值没有默认初始值、必须显式赋值,方可使用
    内存加载位置堆空间或静态域内栈空间

3、方法(method)

方法是类或对象行为特征的抽象,用来完成某个功能操作。

将功能封装为方法的目的是,可以实现代码重用,简化代码

Java里的方法不能独立存在,所有的方法必须定义在类里。

  • 方法的声明格式:

    修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){

    方法体程序代码

    return 返回值;

    修饰符:public,缺省,private, protected等

    返回值类型:

    **没有返回值:**void。

    有返回值,声明出返回值的类型。与方法体中return返回值”搭配使用

    方法名:属于标识符,命名时遵循标识符命名规则和规范,“见名知意”

    形参列表:可以包含零个,一个或多个参数。多个参数时,中间用逗号隔开

    返回值:方法在执行完毕后返还给调用它的程序的数据。

  • 方法的调用

    • 方法调用过程(本质作用)
      执行所调用方法中的代码,方法结束后返回到调用位置执行之后代码
      PS:若方法有返回类型,则可以接收返回该类型的数据。

    • 参数. (调用过程是将实际参数赋值给形式参数)
      实际参数(调用时,使用的参数变量)
      形式参数(定义时,声明的参数变量)

    • 参数传递(实际参数给形式参数赋值的过程)
      值传递(实际参数和形式参数值相同的两个不同变量)
      引用传递(实际参数和形式参数指向同-地址的两个变量)

    • 静态的需要使用类来调用

      类名.静态变量(类变量)

      类名.静态方法()

    • 实例的需要对象来调用

    对象.实例变量

    对象.实例方法()

    • 对象.静态变量或方法();语法正确,但不推荐使用
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值