黑马程序员——面向对象

------- android培训java培训、期待与您交流! ----------

面向对象

  • 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。早期的计算机编程是基于面向过程的方法,比如C语言就是面向过程的。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。
  • 面向对象是相对面向过程而言。面向过程和面向对象都是一种思想。
  • 可以从比较面向过程和面向对象来对面向对象简单的认识:
  • 面向过程:强调的是功能行为;
  • 面向对象:将功能封装进对象,强调具备了功能的对象。
  • 面向对象时基于面向过程的。
  • 面向对象:执行者变指挥者。对象即实现各个功能的程序。如果对象没有,可以自己创造对象,以实现功能。

例如:人开门,名词提炼法。

人
{
	开门(门)
	{
		门.开();
	}
}
门
{
	开(){操作门轴等}
}


上面的模拟例题表示出了面向对象的优点,就是说一个人从执行者变成指挥者,这样可以提高工作效率,节省时间空间,能创造更多的价值。

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

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。

好处: 将变化隔离,便于使用,提高重用性,提高安全性。

原则:将不需要对外提供的内容都隐藏起来。把属性都隐藏,提供公共方法对其访问。

通过一个例子来说明封装:该例子引用了private私有化来达到一个封装的作用。

class Person
{
	private int age;//私有化。age私有化后,类以外及时建立了对象也不能直接访问,但是人应该有年龄,就需要在Person类中提供对应访问age的方式。

	public void setAge(int a )//因此可以设置一个来对其进行访问
	{
		if(a>0&&a<150)    //控制条件必须写在方法中,来限定人的年龄范围。
		{
			age=a;
			speak();
		}
		else
			System.out.println("非法 age");
			age=a;
	}
	public void getAge()
	{
		return age;
	}
	void speak()
	{
		System.out.println("age="+age);
	}
}

class PersonDemo
{
	public static void main(String[] args)	
	{
		Person p=new Person();
		//p.age=20;
		p.setAge(20);
		p.speak();
	}
}



  • 继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性行为,只要继承单独的那个类即可。多个类可以称为子类,单独这个类称为父类或者超类。子类可以直接访问父类中的非私有的属性和行为,通过extends 关键字让类与类之间产生继承关系。

继承的特点:
Java只支持单继承,不支持多继承。
一个类只能有一个父类,不可以有多个父类。
class SubDemo extends Demo{} //ok
    class SubDemo extends Demo1,Demo2...//error
Java支持多层继承(继承体系)
class A{}
    class B extends A{}
    class C extends B{}

定义继承需要注意:
不要仅为了获取其他类中某个功能而去继承
类与类之间要有所属( " is a " )关系,xx1是xx2的一种。

  • 多态:
体现:
父类或者接口的引用指向或者接收自己的子类对象。
作用:
多态的存在提高了程序的扩展性和后期可维护性
前提:
需要存在继承或者实现关系要有覆盖操作
多态的存在提高了程序的扩展性和后期可维护性
      前提:
需要存在继承或者实现关系要有覆盖操作
多态的特点:
成员函数:
编译时:要查看引用变量所属的类中是否有所调用的成员。
在运行时:要查看对象所属的类中是否有所调用的成员。 成员变量: 只看引用变量所属的类。


  • 构造函数:

class person
{
	private String name;//私有化名字
	private int name;   //私有化年龄
	Person()	//构造函数	
	{
		System.out.println("A:name="+name",,age="+age);
	}
	Person(String n)//构造函数
	{
		name=n;
		System.out.println("B:name="+name",,age="+age);
	}
	Person(String n)//构造函数
	{
		name=n;
		age=a;
		System.out.println("C:name="+name",,age="+age);
	}
}

class PersonDemo2
{
	public static vodi main(String[] args)
	{
		Person p1=new Person();           //对象1
		Person p2=new Person("lisi");     //对象2
		Person p3=new Person("wangwu",10);//对象3
	}
}

构造函数和一般函数的异同:

运行:
构造函数对象已建立就运行,即给对象初始化。
一般函数对象调用了才执行,给对象添加对象具备的功能。
一个对象建立,构造函数只运行一次。
而一般方法可以被该对象调用多次。
什么时候需要定义构造函数:当分析事物时,该事物存在具备一些特性或行为,那么将这些行为定义在鼓噪函数中。

构造代码块:作用,给对象进行初始化,对象一旦建立就运行,而且优先与构造函数执行。

和构造函数的区别:构造代码块是给所有对象进行统一初始化,而构造函数时给对应的对象初始化。

 构造代码块中定义的是不同对象共性的初始化内容。





-------  android培训 java培训 、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发】黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值