JAVA基础-面向对象-day01

第二阶段-面向对象

面向对象-day01

9.面向对象概述

9.1. 软件开发方式(了解)
9.1.1.面向过程(了解)

​ 面向过程和面向对象各有千秋,面向对象更符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性,它拥有三大特征:

  • 封装(Encapsulation)

  • 继承(Inheritance)

  • 多态(Polymorphism)

9.1.3.什么是抽象

​ 先来普及一个面向对象中非常重要的一个概念——抽象。

​ 所谓抽象,从特定的角度出发,从已经存在的多个事物中抽取我们所关注的特性、行为,从而产生一个新的事物的思维过程,是一种从复杂到简洁的思维方式。

9.2.1. 变量的分类

​ 根据变量定义位置的不同,分成两大类:

  • 成员变量:直接定义在类中,方法外面。又称之为字段(Field),不要称之为属性(错误),后讲

  • 局部变量:除了成员变量,其他都是局部变量,具体存在于三个地方

    • 方法内
    • 方法的形
    • 代码块中(一对花括号)
9.2.2.变量的初始值(要记住)

变量的初始化表示在内存中开辟存储空间,只有初始化之后,才能使用。

  • 成员变量:默认是有初始值的,不同类型的初始值,如下图

  • 局部变量:没有初始值,所以必须手动先初始化才能使用

在这里插入图片描述

9.2.3.变量的作用域

变量根据定义的位置不同,也决定了各自的作用域是不同的,关键看变量所在的那对花括号。

  • 成员变量:在所定义的类中都有效

  • 局部变量:从开始定义的位置开始,只能在自己所在的花括号内有效

9.2.4.变量的生命周期

变量的生命周期,表示变量在内存在能存活多久。

  • 成员变量(属于对象):存储在堆内存中,随着对象的销毁而销毁

  • 局部变量(属于方法):存储在栈内存中,随着所定义方法的调用结束而销毁

    • 局部变量存储在方法中,每次调用方法都会在栈空间开辟一块内存空间——栈帧,方法调用结束,栈帧就被销毁了,内存中的存储的变量数据也销毁了
9.3.类和对象的关系(了解)

面向对象思想中有两个非常重要的概念,类和对象,其中:

  • 类(class),是对某一类事务的抽象描述(状态和行为),如下图的抽象女人图。

  • 对象(object),表示现实生活中该类事物的个体,也称之为实例,如下图的每一个具体的女人。

  • 类可以看作是对象的数据类型,就好比无论你是谁,只要是女人,那么类型就是女人。

9.4. 类的定义

类是拥有相同特性(状态)和行为(功能)的多个对象的抽象。而一般的,描述类或者说定义类,就从状态和行为上分析,那么怎么来表示状态和行为呢?

  • 使用成员变量来表示状态

  • 使用成员方法来表示行为

定义语法格式:

public class 类名{
	//可编写0到N个成员变量
	[修饰符] 数据类型	变量名1;
	[修饰符] 数据类型	变量名2;

	//可编写0到N个成员方法
	[修饰符] 返回值类型  方法名称(参数){
		//方法体
	}
}

注意:

  • 成员变量和方法都 能使用static修饰,修饰符是可选用的,都先不使用任何修饰符

  • 在面向对象设计中,描述对象的类和测试类分开来编写

  • 在描述对象的类中,不需要定义main方法,专门在测试类中提供main方法。

9.5. 对象操作
9.5.1. 对象基本操作
  • 创建对象

    类名 对象变量名 = new  类名();
    
    1. 直接打印对象的时候,打印的是类似于数组一样的hashCode值(先不管,后面讲)
    System.out.println(对象变量名);//格式如:类名@3294e4f4
    
    1. 匿名对象:创建对象之后没有赋给某一个变量,只能使用一次(先知道)
    new  类名();
    
  • 对象操作字段(成员变量)

    1. 给字段设置数据
    对象变量名.字段名 =;
    
    1. 获取字段数据
    数据类型 变量 = 对象变量名.字段名;
    
  • 对象调用方法

    对象变量名.方法(参数);
    
9.6.构造器(重点掌握)//如果手动添加了其他构造器,那么默认的就没了,需要手动添加 无参构造器

创建猫对象的时候,代码如下:

Cat c1  = new Cat();

其实这段代码,是在通过调用Cat类的构造器,来创建对象。

构造器,也称之为构造方法(Constructor),作用是用来创建对象和给对象做初始化操作。

构造器的语法和特点:

[public] 类名(参数){
   //方法体
}

Cat类的构造器:

public class Cat {
	public Cat() {
	}
    //省略其他代码
}
  • 构造器名称和类名相同

  • 不能定义返回类型

  • 构造器中不能使用return语句

10.封装思想

10.1.访问修饰符(必须记住)
  • private:表示当前类私有的,类访问权限,只能在本类中操作,离开本类之后就不能直接访问

  • 不写(缺省):表示当前包私有,包访问权限,定义和调用只能在同一个包中,才能访问

  • protected:表示子类访问权限,同包中的可以访问,即使不同包但是有继承关系也可以访问

  • public:表示公共的,可以在当前项目中任何地方访问

10.2.1. JavaBean规范(重点掌握)

JavaBean是一种某些符合条件的特殊类,但是必须遵循一定的规范:

  • 类必须使用public修饰

  • 必须保证有公共无参数构造器,即使手动提供了带参数的构造器,也得手动提供无参数构造器

  • 字段使用private修饰,每个字段提供一对getter和setter方法

需求:针对名为name的字段名来举例

getter方法:仅仅用于返回某一个字段的值

public String getName(){
    return   name;	//返回name字段存储的值
}

如果操作的字段是boolean类型的,此时是is方法,把 getName 变成 isName。

setter方法:仅仅用来给某一个字段设置值

public void setName(String  n){
    name = n;	//把传过来的参数n的值,存储到name字段中
}

注意:每一个字段都得使用private修饰,并提供一对getter/setter方法。

代码如下:

public class Student {
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String n) {
		name = n;
	}
	public int getAge() {s
		return age;
	}
	public void setAge(int a) {
		if(a < 0) {
			System.out.println("非法的年龄");
			return;
		}
		age = a;
	}
}

测试类:

public class StudentDemo {
	public static void main(String[] args) {
		Student s = new Student();
		// 调用setter方法设置字段数据
		s.setName("小明");
		s.setAge(12);
		// 调用getter方法获取字段数据
		String n = s.getName();
		int a = s.getAge();
		System.out.println(n + "," + a);
	}
}

``

测试类:

public class StudentDemo {
	public static void main(String[] args) {
		Student s = new Student();
		// 调用setter方法设置字段数据
		s.setName("小明");
		s.setAge(12);
		// 调用getter方法获取字段数据
		String n = s.getName();
		int a = s.getAge();
		System.out.println(n + "," + a);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值