26-02-2021 面向对象 day06

面向对象

面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为
面向对象:当需要实现一个共能的时候,不关心具体步骤,找一个具有该功能的人,来帮我做事

找一个jdk给我们提供好的Arrays类, 其中有一个toString方法,直接就能把数组变成想要的格式的字符串。

1.1 类
属性:是什么 身高,年龄,姓名。。。
行为:能做什么 吃饭,睡觉,学习。。

成员变量(属性)是直接定义在类当中,方法外
成员方法(行为) 不用static关键字
public void eat(){}
public void sleep(){}
如果成员变量没有进行赋值,会有一个默认值,跟数组一样

1.2 对象的创建及其使用
如何创造对象:

  1. 导包 指出需要使用的类,在什么位置;
    import 包名称.类名称;
    对于和当前类属于同一个包的情况, 可以省略导包语句不写。

  2. 创建
    类名称 对象名 = new 类名称();
    Student stu = new Student();

  3. 使用
    分为两种情况:
    如何使用成员变量;对象名.成员变量名
    使用成员方法; 对象名.成员方法名(参数)
    也就是,想用谁,就用对象名点儿谁。
    System.out.println(stu.name);

将右侧字符串赋值交给stu对象当中的name成员变量
stu.name = “xxx”;

  1. 使用对象的成员方法,格式:

  2. 练习 定义一个手机类
    分析: 属性:品牌 价格 颜色
    行为: 打电话 发短信 拍照
    对应到类当中

成员变量(属性) String brand
double price
String color
成员方法(行为)public void call(Srting who){}
public void sendMessage(){}


public class Phone{
	String brand;
	double price;
	String color;

//方法

public void call(String who){
	System.out.println("给" + who +"打电话");
}
 public void sendMessage(){
	System.out.println("群发短信")}
}
//创建对象
import xxxx.xx
public class Demo1Phone{
	public static void main (String[]args){
		Phone one = new Phone();
		System.out.println(one.brand);
		System.out.println(one.price);
		System.out.println(one.color);
		
		one.brand = "苹果";
		one.price = 8388.6;
		one.color = "黑色";
		System.out.println(one.brand);
		System.out.println(one.price);
		System.out.println(one.color);
		
		one.call("乔布斯");
		one.sendMessage();

}

}

当一个对象作为参数,传递到方法当中时,实际上传递进去的是对象的***地址值***

当使用一个对象类型作为方法的返回值时,返回值就是对象的***地址值***

1.3 成员变量和局部变量的区别

  1. 定义的位置不一样:
    局部变量在方法的内部
    成员变量在方法的外部,直接写在类当中

  2. 作用范围不一样
    局部变量只有方法当中才可以使用,出了方法就不能再用了
    成员变量整个类全都可以通用

  3. 默认值不一样
    局部变量没有默认值,如果要想使用,必须手动进行赋值
    成员变量:如果没有赋值,会有默认值,规则和数组一样

封装性

面向对象三大特征:封装 继承 多态

  1. 方法就是一种封装
  2. 关键字private也是一种封装

封装就是将一些细节信息隐藏起来,对于外界不可见

一旦使用private修饰 本类当中当中可以随意访问,超出就不能直接访问
简介访问private成员变量,就是定义一对儿getter/setter 方法

必须叫setxxx 或者getxxx
对于set来说不能有返回值, 参数类型和成员变量对应
对于get来说 不能有参数 返回值类型和成员变量对应

private int age;

public void setAge(int num){ //有参数 无返回值
age = num;
}

public int getAge(){ // 没参数 有返回值
return age;
}

练习:通过关键字private定义学生类
定义学生类 注意布尔类型
***this 关键字的作用
当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量。如果需要访问本类当中的成员变量,需要使用格式。
this.成员变量名
通过谁调用的方法谁就是 this

构造方法
专门用来创建对象的方法,当我们通过关键字new创建对象是,其实就是在调用构造方法
格式:
public 类名称 (参数类型 参数名称){
方法体
}

注意事项
成员变量 无参数的构造方法 全参数的构造方法 getter setter

  1. 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
  2. 构造方法不要写返回值类型,不要写void
  3. 构造方法不能return一个具体的返回值
  4. 如果没有编写构造方法,编译器会默认赠送一个构造方法,没有参数,方法体什么事情都不做。
  5. 一旦编写了至少一个构造方法,编辑器将不再赠送
  6. 构造方法也是可以重载的 方法名称相同 参数列表不同

例如
public class Student{
public Student(){
System,out,println(“构造方法实现了”)

}

}

标准的类
一个标准的类通常都需要下面四个组成部分

  1. 所有的成员变量都要使用private关键字修饰
  2. 为每一个成员变量编写一个getter setter方法
  3. 编写一个无参数的构造方法
  4. 编写一个全参数的构造方法
    这样标准的类也叫做Java Bean
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值