08 面向对象

08

面向对象

概述
  • 面向过程的语言:C
    • 面向过程追求的是一个过程,在乎代码实现的过程
  • 面向对象的语言:Java Python Scala
    • 追求的是代码的实现结果,不在乎过程怎么实现 ,只要求结果正确
    • Java把面向过程进行了封装
      • ooa-------面向对象的分析(Object-Oriented anylize)
      • ood-------面向对象的设计(Object-Oriented design)
      • ood-------面向对象的编程(Object-Oriented program)
  • 软件开发的生命周期
  1. 需求分析
  2. 概要设计
  3. 详细设计
  4. 软件开发
  5. 软件测试
  6. 上线部署
  7. 运行和维护
类的三大特征
  • 封装
  • 继承
  • 多态
  • (抽象)
对象六大组件
  • 成员变量 : 定义在类中方法外的变量,不被static修饰的叫做成员变量
  • 成员方法: 不被static修饰的方法叫做成员方法
  • 局部变量: 定义在方法中的变量叫做局部变量
  • 静态变量: 被static修饰的变量叫做静态变量
  • 静态方法: 被static修饰的方法叫做静态方法
  • 构造方法: 方法名与类名一模一样的方法叫做构造方法
类和对象的关系
  • 类:同一类事物的特征和行为的抽取模板
    • 一种数据类型(引用数据类型),自定义的一种类型,使用变量表示属性,使用方法表示行为
  • 对象:具体存在的事物,符合类的定义特征

类的定义格式:

class 类名{
    
}

创建对象的格式:

类名 对象名 = new 类名();
public class Cat {
	String name;
	int age;
	String variety;
	String sex;
	
	public void work(){
		System.out.println("猫捉老鼠.");
	}
	
	public void show() {
		System.out.println("姓名:"+name+",年龄:"+age+"岁,品种:"+variety+",性别:"+sex);
	}
}

public class CatTest {
	public static void main(String[] args) {
		Cat cat = new Cat();
		
		cat.name = "丸子";
		cat.sex = "母";
		cat.age = 1;
		cat.variety = "英短银渐层";
		
		cat.show();//姓名:丸子,年龄:1岁,品种:英短银渐层,性别:母
		cat.work();//猫捉老鼠.
	}

}
内存分析:

在这里插入图片描述

类的重命名:
  • 右键------->refacter-------->rename
  • 光标指向类名点击 Rename compilation unit to ‘NoNameObjectDemo.java’
成员变量和局部变量
  • 成员变量:
    • 定义在类中方法外,没有static修饰,存储在堆内存中,有初始值
    • 随着对象的创建而产生,随着对象的消失而消失
  • 局部变量:
    • 定义在方法中或者是方法的参数列表上,存储在栈内存中,没有初始值
    • 局部变量随着方法的调用而产生,随着方法的结束而消失

封装

  • 成员变量私有化:private

    • private:权限修饰符,私有的,修饰方法和变量,
      • 被private修饰的方法和变量,只能在本类中访问
  • 提供一套访问、修改的方法:get()/set()方法

this:区分同名的成员变量和局部变量,this指代的是成员变量

public class Mobile {
	private String brand;
	private String type;
	private int price;
	private String color;

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getBrand() {
		return brand;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getType() {
		return type;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	public int getPrice() {
		return price;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public String getColor() {
		return color;
	}
	
	public void show() {
		System.out.println("手机品牌:"+brand+",手机型号:"+type+",手机价格"+price+",手机颜色:"+color);
	}
}



public class MobileTest {
	public static void main(String[] args) {

		Mobile m1 = new Mobile();

		m1.setBrand("华为");
		m1.setType("Nover7");
		m1.setPrice(5000);
		m1.setColor("黑色");

		Mobile m2 = new Mobile();

		m2.setBrand("华为");
		m2.setType("Nover7");
		m2.setPrice(5000);
		m2.setColor("黑色");

		Mobile m3 = new Mobile();

		m3.setBrand("华为");
		m3.setType("Nover7");
		m3.setPrice(5000);
		m3.setColor("黑色");

		Mobile m4 = new Mobile();

		m4.setBrand("华为");
		m4.setType("Nover7");
		m4.setPrice(5000);
		m4.setColor("黑色");
		
		Mobile[] mArry = {m1,m2,m3,m4};
		for (int i = 0; i < mArry.length; i++) {
			mArry[i].show();
		}
	}
}

构造方法

构造方法的格式:

修饰符 类名(参数列表){
    方法体;
}

构造方法的注意事项:

  • 方法名和类名相同
  • 构造方法没有返回值,连void都没有
  • 构造方法是可以重载的(一个类中可以存放多个名字相同的方法,但是必须保证参数的个数或类型不同,与返回值无关)
  • 构造方法在使用new关键字创建对象时调用
  • 如果我们没有在类中写构造方法, 系统会默认为我们生成一个无参的构造方法
  • 如果我们自己写了构造方法, 则系统不再为我们提供
public class Person {
	
	private String name;
	private int age;
	
	public Person() {
		System.out.println("我是Person类的构造方法");
	}
	
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}
	
	public void show() {
		System.out.println(name + "--" + age);
	}
}


public class PersonTest {
	public static void main(String[] args) {
		
		Person person = new Person("卡卡罗特",18);
		person.show();
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值