黑马程序员 java基础<—>--->面向对象


一、面向对象概述


java本身是一种面向对象的编程语言和面向对象的编程语言相比更符合人们的思考习惯。面向对象将功能本身进行封装,强调的事对象,将复杂的问题简单化,提高的代码的复用性。开发中不断的创建对象调用对象,我们只需要写一个类,通过这个类对事物进行描述,我们可以创建无数个该类的对象,使用对象,指挥对象做事情。所以面向对象的出现,让曾经在过程中的执行者,变成对象中的指挥着,面向对象具有三个特征:1、封装 2、继承 3、多态。

二、类与对象

1.类与对象的概述

a.类(class):是用来描述一个领域模型中的具体概念(名词)的,是从客观世界抽象出来的一类事物。
b.对象(object):概念的具体实例,对象是类的具体实例,是实实在在地个体。
c.类与对象的关系:类就是java语言对现实生活中的事物进行描述,通常对事物描述只关注两方面,一个是事物的属性,一个是事物的行为,只要明确该事物的属性和行为定义在类中即可。在java中对象是通过new的方式来创建的,例如:Person p=new Person(),中p代表类类型的引用型变量,Person代表Person这个类。这就是创建对象的方式。对象定义在堆内存中,并默认初始化。

2.成员变量和局部变量

成员变量:(1)定义在类中,整个类都可以访问
          (2)存在于堆内存的变量中
          (3)成员变量随着对象的创建而存在,随着对象的消失而消失
          (4)都有默认初始化值
局部变量:(1)定义在函数、语句、局部代码块中,只在所属区域中有效
          (2)存在于栈内存的方法中
          (3)随着所属区域的存在而存在,随着所属区域的结束而释放
          (4)没有默认初始化值

三、封装

1.定义:

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

2.封装的优点及好处

(1)将变化隔离
(2)便于使用
(3)提高复用性
(4)提高安全性

3.封装的原则

封装的原则是将不需要对外提供的内容隐藏起来,把属性都隐藏起来,对外提供方法访问。

4.封装的意义

有些时候我们需要对类中的数据进行保护,例如:Person p=new Person();p.age=-100;这是一个根据人创建的对象,并对该对象的属性进行赋值为-100,该属性是人的年龄,我们知道人的年龄不可能是-100岁,这时就需要对数据进行保护。这句代码在java语法中不存在任何问题,但不符合常理,只有用封装属性来解决问题。解决方案:首先,我们需要把属性age隐藏起来,用private关键字修饰的属性可以在类外被隐藏;其次,private的属性在类外无法操作,因此需要提供public的方法为操作属性的中介,一般情况下,我们用set/get方法进行读写。
用代码体现:
public class Person{//定义一个Person类
	private int age ;//将人的年龄私有化
	public Person(){}
	public Person(int age){
		this.setAge(age);//自定义构造方法,构造方法中调用setAge方法给age初始化
	}
	public void setAge(int age){
		if(age>0 && age<150){//判断age赋值是否在合理范围内
		this.age=age;//如果在合理范围内,将age赋值给对象中的age
		}
	}	else{
		System.out.println("年龄错误");//如果输入的年龄超出范围,提示“年龄错误”
		}
	public int getAge(){
		return age;
	}
		
}
public class TestPerson{
	public static void main (String[] args){
		Person p=new Person();//创建Person的对象命名为p,p是引用型变量
		p.setAge(50);//用p调用setAge方法并赋值为50
		System.out.println("年龄:"+p.getAge())//打印年龄
	}

}

5.访问控制

java中有3种访问修饰符和4个层级,分别为private、protected和public,另外,不使用任何访问修饰符也表示特定含义,称之为default。类、方法、成员变量用它们修饰,其中public和什么都不写只允许修饰类。
(1)private:private修饰的成员变量或方法只能在本类中访问。
(2)public:public修饰的成员变量或方法可以任何其他的类中通过该对象的引用访问。
(3)protected:protected修饰的成员变量或方法的访问权限介于default和public之间,可以由同一个包的类或其子类访问。
(4)没有任何修饰符的成员变量或方法只能由同一个包中的类中通过该对象的应用访问。
权限大小排序:public>没有修饰符>protected>private


四、对象与函数


1.main函数(pubic static void mian (String[] args{...})

main函数概述:main函数就是在java中我们常说的主函数,它的写法固定,是我们最开始接触java时都会写的一个函数。main函数是java程序的入口,它并不比其他函数级别高,而是虚拟机只认这个固定的写法。

2.main函数组成介绍

public:代表着main函数的权限是最大的。
static:虚拟机调用时不需要对象,直接用main函数所属的类名调用,代表main函数随着类的加载就已经存在。
void:代表main函数没有固定的返回值。
main:代表函数名,它不是关键字,只是虚拟机识别的固定名字。
String[] args:代表main函数的参数列表,是一个数组类型的参数,元素都是字符串类型。

3.构造函数

1.构造函数的特点:(1)函数名与类名相同
                  (2)不用定义返回值类型
                  (3)没有具体的返回值
2.作用:给对象进行初始化,创建对象都必须要通过构造函数初始化,一个类中如果没有定义过构造函数,那么该类会有一个默认的空参构造函数,如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了。
3.一般函数和构造函数的区别
一般函数:对象创建后,需要函数功能时才调用,对象创建后,可以被调用多次。
构造函数:对象创建后,就会调用与之对应的构造函数,对对象进行初始化,对象创建时,会调用并且只调用一次。

五、专业术语解析

1.类:类作为设计蓝图来创建对象的代码段,它描述了对象的特征,该对象具有什么样的属性,怎么使用对象完成一些任务,它对事件进行怎样的响应等。

2.对象:对象是类的一个实例,通常通过调用类的一个构造函数来创建它。

3.方法:方法是在类中定义的函数,一般而言,一个方法描述了对象可执行的一个操作。

4.属性:属性是类中定义的变量,类的属性突出刻画了对象的性质或状态。某些情况下,对象的使用者可能不允许改变对象的某些特征,这是因为类的创建者已经规定了哪些属性不能被使用者修改。这就比如你只能知道我是男生,但你没有办法改变。

5.构造函数:构造函数是创建对象所调用的特殊方法。

6.继承:继承是面向对象的一个特征,它规定一个类可以从其他的基类中派生,并且该派生类继承其基类的接口和相应的代码。

7.重写:重写是面向对象的一个概念,它规定一个派生类可以创建其基类某个方法的不同实现代码,实际上,它完全重写了基类中该方法所执行的操作。

8.封装:封装时一个概念,它的含义是把方法、属性集中到一个统一的类中,并对使用者屏蔽其中的细节问题一个关于封装的实例小汽车,我们通过操作方向盘、刹车和加速操作汽车。

9.重载:它规定一个方法可以具有不同的实现,但方法名称是相同的。

10.多态:它规定,一个同样的函数对于不同的对象可以具有不同的实现。



 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值