android基础学习-java篇day4-step2-第一节:java面向对象

1-面向对象的三大特征:

1继承、2封装、3多态

什么是类?什么是对象?什么是面向对象?什么是方法?

类是模子,确定对象将会拥有的特征(属性)和行为(方法)(虚拟的)

对象是类的实例化表现 (看得到摸得着)

面向对象:就是关注对象、根据事物特征做程序设计

例如:去宠物店买猫的例子

店员:你要买什么样子的猫呢?

我:我要,小一点的,可爱一点的,不掉毛的猫

然后店员就推荐了一只叫花花英短猫、凡凡的田园猫 

进宠物店买猫的过程:

就是面向对象的过程

对象就是这两个实体的猫,是提出的我要猫的描述,是虚拟的

属性:对象有的静态属性:(体色、名字)

方法:对象能做什么,动态属性:(猫能跑、能跳)

package com.demo.day4.object;

public class Cat {
	//成员属性//静态的;对象的特征
	String name;//定义猫的名字
	int age;//定义猫的年龄
	double weight;//定义猫的体重
	String species;//定义猫的品质
	
	//成员方法:动态的;可以对象干什么
	//猫能跑、能吃
	public void run(String name) {
		System.out.println(name+"快跑");
	}
	public void eat(String name) {
		System.out.println(name+"吃鱼");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		

	}

类实例化对象,对象调用方法

对象名.方法名

对象名.属性

package com.demo.day4.object;

public class CatTest {

	public static void main(String[] args) {
		// 实例化对象
		Cat one=new Cat();
		System.out.println("猫的名字"+one.name);
		System.out.println("猫的年龄"+one.age);
		System.out.println("猫的体重"+one.weight);
		System.out.println("猫的品质"+one.species);
		//对应一个类当中的成员属性,是有默认值得
		/*
		 * 猫的名字null (String)默认值
		 * 猫的年龄0     (int)默认值
		 * 猫的体重0.0   (double)默认值
		 * 猫的品质null
		 */
		one.name="花花";
		one.run(one.name);
		one.eat(one.name);

	}

输出结果:

猫的名字null
猫的年龄0
猫的体重0.0
猫的品质null
花花快跑
花花吃鱼

2实例化对象

·实例化对象的过程可以分成两部分

-声明对象 Cat one

-实例化对象 new Cat()

第一步:在内存栈空间中声明了一个one的对象

第二步:在内存堆当中通过new关键字开辟一个新的对象空间

接下来通过赋值符号 Cat one=new Cat();

将在堆当中的内存地址存放到栈里面的对象空间中

此时对象名来操作具体对象的信息,栈中存储其实是堆当中地址的引用

new关键字是在内存堆当中开辟一新空间。

例如:使用new关键字开辟空间相当于做了一栋大房子,通过赋值号,就是将这个房子的钥匙存放到对象名的栈空间,对象名通过这把钥匙,可以对对象进行一系列的操作

如果再声明一个对象名:Cat two=one; 

相当于,这个房子的第二把钥匙交给了,two对象名存放的栈空间,two也可以对这个对象进行一系列的操作。

3.构造方法

构造方法必须配合new关键字

语法结构:

1.构造方法与类名必须相同,且没有返回值,可以有参数,也可以无参数

2.构造方法的语句格式

3.只能在对象实例化进行调用  new Cat()

4.当我们再程序当中,没有指定构造方法时,系统会自动添加无参的构造方法

5.当制定有构造方法时,无论是有参、无参的构造方法,系统都不会自动添加无参的构造方法

6.一个类中可以有多个构造方法

7.构造方法不能再普通方法中调用,但可以在构造方法间调用; this();就可以调用,有参数就讲参数放在括号里就可以了。

this();调用重载构造方法,this();必须放在构造方法里的第一条!

this.方法名();调用成员方法

this 关键字:

this.name=name;

this指的是当前对象,谁调用了name的属性,谁就是当前对象

Cat one=new Cat("name");//实例化对象 one调用了name,所以this是指当前one这个对象

--------------------------

//有参构造函数中

public Cat(String name){

this.name=name;

}

 构造方法案例:

分别使用无参构造函数,和带参构造函数进行输出:

package com.demo.day4.object;

public class Monkey {
	String name;
	String feature;
	// 无参构造方法
	Monkey(){
		System.out.println("我是使用无参构造产生的猴子");
	}
	//带参的构造方法
	Monkey(String name,String feature){
		System.out.println("我是使用带参构造产生的猴子");
		this.name=name;//this指的是当前对象,谁调用这个属性,谁就是当前对象;two调用了
		this.feature=feature;
	}
	public static void main(String[] args) {
		//声明并实例化对象
		Monkey one=new Monkey();
        one.name="长尾猴";
        one.feature="尾巴长";
		System.out.println("名称:"+one.name);
		System.out.println("特征:"+one.feature);
		System.out.println("======================");
        
		//声明对象并实例化对象
		Monkey two=new Monkey("白头叶猴","头上有毛,喜欢吃树叶");
		System.out.println("名称:"+two.name);
		System.out.println("特征:"+two.feature);
	}

输出:

我是使用无参构造产生的猴子
名称:长尾猴
特征:尾巴长
======================
我是使用带参构造产生的猴子
名称:白头叶猴
特征:头上有毛,喜欢吃树叶

猜你喜欢

转载自blog.csdn.net/qq_17846019/article/details/82453646