什么是面向对象,类和对象

面向对象 类和对象 封装、继承、多态

面向对象和面向过程

面向对象和面向过程是我们编程中,编写程序的一种思维方式。

  • 面向过程:要解决问题时,思考“我该怎么做”,然后一步步实现的过程。
    • 例如,打扫教室卫生(扫地、拖地、倒垃圾等),按照面向过程的程序设计方式,会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把教室卫生打扫干净了。
  • 面向对象:解决问题时,思考**“我该让谁来做”,然后那个“谁”就是对象**,他是怎么做的不用管,反正最后要把这问题解决。
    • 例如,打扫教室卫生(扫地、拖地、倒垃圾等),按照面向对象的程序设计方式会思考“我该让谁来做,如让小红扫地、让小明拖地、让小强倒垃圾等”,这里的“小明、小红、小强”就是对象,他们要打扫卫生,怎么打扫是他们自己的事,反正最后一群对象合力把教室卫生打扫干净了。
  • 总结:
    • 面向对象思想更符合我们人类思考问题的习惯。
    • 面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。

类和对象

  • 对象:指的是具体的事物,比如人,人就不是对象,他只是一个泛指,只有具体的某个人才是一个对象。
  • 类:可以是类别的概念。
    • 是对具有相同、相似的属性特征、行为、功能的一类事物的信息描述
    • 知道类的真正意义就是在描述事物,属性和功能统称为事物中的成员。事物的成员分为两种:成员属性和成员功能。成员属性在代码中的体现就是成员变量;成员功能在代码中的体现就是成员方法 。
  • 类是对象的模板,对象是类的具体实例。

类实现:

  • 语法: 关键字: class
  • 格式:
// 类名首字母大写,驼峰命名 
// 由public 修饰的类必须与文件名一致 
class 类名{
    // 类的内容: 属性   方法  
  // 属性: 名词 形容词  一个词可以表达清楚的 
  // 格式: 属性数据类型 属性名;  常量:final  修饰 需要初始化 
    String name;
  
  // 方法:动词  一段代码块才可以描述清楚 
    //[方法修饰符] 返回值类型 方法名(参数类型 参数名){ // 方法体 }
    int add(int a,int b){
        return a+b;
    }
    
}

对象:

  • 关键字: new

  • 格式: 类名 对象名 = new 类名();

  • 创建对象时:

    • 在内存中申请一块空间
    • 初始化属性 放入内存中
  • 对象名 vs 对象

    • 在代码中替代对象把程序执行的逻辑串起来 – 代词
    • 对象名存储对象的引用地址 ,通过对象名调用对象的属性和方法
  • 对象只有在程序运行之后new之后才会有。

面向对象三大特性

封装
  • 封装是什么
    • 从字面意思理解,封装就是把一个东西给包装起来,你只知道这是一个什么东西,但是这个东西具体是什么样的就不清楚了。
    • 封装是面向对象的一个特性,类和方法都体现了这一特性,封装是指将具体细节给隐藏起来,并且对外提供一个可以访问的接口。
  • 封装体现
    • 方法是一种封装,方法中的代码是其实现细节,对外提供了方法名供访问。
    • 类是一种封装,封装了其属性和方法,属性通过private关键字封装,同时设置属性的getxxx(),setxxx()方法来访问属性。
public class people{
	private String name;  // private属性来限制该属性只能在该类中出现,外界不能直接访问
	private String class;
	public void setName(String name){
		this.name = name;  //外界改变name属性的方法
	}
	public String getAge(){
		return name;  // 外界通过该方法来获取name属性值
	}
	// age属性一样设置,这里就不写了
	public void study(){
	// 方法代码块中就是对功能细节(怎么实现)的封装,方法名就是对外访问的接口。
		System.out.println(name + "努力学习中");
	}
}
继承
  • 概念:通俗的说,继承是指子女继承父母财产。在Java中,继承是指类和类之间的一种关系,一个类继承一个类就是指在一个类的基础上去定义一个新的类,新的类是子类,被继承的类是父类。
  • 实现方式 子类 extends 父类
  • 继承特点:子类会继承父类的所有成员,可以直接使用父类中的public成员。
public class Employee(){
	String name;
	int age;
	private String id;
	public void work(){
		System.out.println("工作");
	}
}
public class Developer extents Employee(){
	
}
public static main(Stirng[] args){
	Developer de = new Develoter();
	de.work(); 
}
结果会在控制台显示 工作
  • 注意
    • 虽然子类继承父类的所有成员,但是父类的private属性在子类中不能直接使用,需要通过公共方法来间接访问。
    • 继承只能单继承,不能多继承
    • 继承可以多层继承,即B继承A,C继承B,则B里面也有A里面的成员。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值