java 面向对象

java最大的特色就是面向对象。面向对象的三大特性:封装,继承,多态。面向对象的内容非常庞大,基本上很少能在一个文章说完,就直接说说一些常见的问题吧。

封装

封装这个特性,从字面上应该多能理解。就是将一定独立功能或者数据按一定的约定俗成的方式组织起来。这个没有太多异议。就不多说了。

继承

java不支持多继承,那样会是程序变的复杂和不可控。所以只允许继承一个父类,可以多个接口。

多态

多态应该是面向对象最重要的内容也是最迷糊的地方。起码我在好长时间内没有明白多态的含义。多态说白了就是多种状态,也就是说同一个操作能产生的结果是不一样的。通常,多态伴随着继承而来。他们是密不可分的。

面向对象的基础

public class Person {

	private int age;		//私有字段
	
	public int getAge()	//get属性 
	{
		return age;
	}

	public void setAge(int age) //set属性 
	{
		this.age = age;
	}

	public Person()	//无参构造函数
	{
		age=0;
	}
	
	public Person(int age)	//有参构造函数
	{
		this.age=age;
	}

}

上面是一个典型的类定义。public 是对类的访问级别。class是关键字。Persion是类名,在java中文件名必须和一个public类型的类名保持一致。

  • 构造函数:

和类名一致,无返回类型的函数。一个类中默认会有一个无参的构造函数,就算没有手动书写,java也会自动添加。既然有无参构造函数,那肯定就有有参构造函数了。这样一来,一个类里面可以有多个构造函数的存在。这样就是方法重载的概念。

  • 对象的出生:

当你抽象出类以后,其实并不能在程序中使用。必须创建一个具体的对象才能有意义。创建对象就直接使用 new关键字。新建一个对象。

Person Andyliu=new Person();创建了一个刘德华(Andyliu)具体对象,当我们不知道他的年龄时,可以使用默认构造函数。new Person() 这个操作做了三件事:1.为对象开辟堆内存空间。2.调用Person类的构造方法 ()。3.返回新建对象的内存地址。
当一个具体的对象创建成功以后,必须要有地方(内存)去存放它。java中值类型存放在 栈内存中,而引用类型存放在 堆内存中。Andyliu 是Person类型,他指向堆内存的某一个地址。对引用对象的任何操作多会影响到堆内存中的值。特别是在函数传参方面。

image

匿名对象:只使用一次的对象,成为匿名对象。典型常用方式:new Person().xxx();

对象属性,方法:一个类包含了 属性和方法。那么每个具体对象的属性多是存放各自的内存空间中,互不干扰。但是方法是所有对象共用的。也就是说方法在内存只有一个。

对象继承

继承父类使用 extends 关键字。继承接口使用 implements 关键字。

对象实例化顺序:

1.static 静态 变量和方法。在new 之前,静态变量和方法并不依赖new 方法。这就是为什么我们可以直接使用的原因。当村长继承关系时: 父类static变量 ---->父类static方法 --->子类static变量 --->子类static方法

2.非static 成员变量(普通的变量)。在new 之后。

没有继承关系,初始化顺序:自己的变量 --->自己的构造函数

有继承关系,初始化顺序:父类的变量 --->父类的构造函数 --->子类的变量 --->子类的构造函数

3.非static 成员方法(普通的方法)。初始化顺序和普通的变量一样。

image

转载于:https://www.cnblogs.com/yoyozhou/archive/2012/01/11/2319704.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值