java中的面向对象

目录

 

一、面向对象设计

1.面向对象与面向过程

2.类和对象

二、应用案例

1.实例化单个对象

2.实例化多个对象

三、局部变量与成员变量

1.区别

四、方法重载

五、构造方法

六、this应用


 

一、面向对象设计

1.面向对象与面向过程

面向过程思想

生活的角度理解: 只关注完成某件事,不关注是谁完成的

程序的角度理解:从main出发,一步一步执行某个功能,没有对象的调用

面向对象思想

生活的角度理解:关注某个对象去完成某件事

程序的角度理解:从main出发,找到对象再完成功能

2.类和对象

什么是对象?

在java的世界里,万物皆对象。也就是说任何可以进行描述的某个具体的的东西都能够成为对象,它是一类事物的具体化的个体(实例)(具有属性和行为的事务为对象)

什么是类?

类是具有相同属性和行为的一组对象的集合(相同类型的对象组成的一个集合)

面向对象编程设计:创建一个类,类里面有属性和方法,通过实例化对象,通过对象调用类里面的属性和方法,类是对象的抽象,对象是类的实例化

 

二、应用案例

1.实例化单个对象

class Dog{  //创建一个类
    //类中有属性
	String name;  //----成员属性
	int    age;
	
	public void eat() {  //类中有方法--成员方法
		System.out.println(name+"正在吃");
	}
}
public class Test1 {
	public static void main(String[] args) {
		//实例化单个对象的案例:旺财今年2岁;会吃饭
		//分析:类:Dog类    对象:旺财        属性:color,age  方法:eat
		//实例化对象
		Dog wc = new Dog();   //类名  对象=new 类名();
		wc.name = "旺财";    //对象调属性   赋值
		wc.age  = 2;
		System.out.println(wc.name);  //取值
		wc.eat();    //对象调方法
	}
}

2.实例化多个对象

实例化多个对象:每个对象都有独立的成员属性

class Pig{  //创建一个类
	String name;  //类中有属性
	public void eat() { //类中有方法
		System.out.println(name+"很能吃!");
	}
}

public class Test2 {
	public static void main(String[] args) {
		//实例化多个对象:佩奇很能吃,八戒也很能吃
		//分析:类-Pig  对象-佩奇,八戒   属性:姓名   方法:eat
		
		Pig peiQi = new Pig();  //实例化对象
		peiQi.name = "佩奇";
		
		Pig baJie = new Pig();  //实例化另一个对象
		baJie.name = "猪八戒";
		
		peiQi.eat();  //佩奇很能吃
		baJie.eat();  //八戒很能吃
	}
}

三、局部变量与成员变量

1.区别

主要从以下几点区分局部变量与成员变量

  • 出现位置:

局部变量,出现在方法体中,方法参数中

成员变量,出现在类中,与成员方法同级

  • 存储位置:

局部变量存储在栈区; 成员变量属于对象,存在堆区

  • 作用域:

局部变量作用域在方法体中,出了方法体,则销毁

成员变量作用域,至少在当前类中

  • 默认值:

局部变量没有默认值,必须先赋值,再使用

成员变量有默认值,String-null,int-0....和数组类似

  • 重名问题:

重叠作用域下,重名变量,局部变量优先;作用域小的覆盖大的

案例:

//成员变量与局部变量的测试案例
class Cat{
	String name;
	int    age;
	
	public void eat() {
		String name = "机器猫";
		System.out.println(name+"很能吃");
	}
}
public class Test1 {
	public static void main(String[] args) {
		Cat cat = new Cat();
		System.out.println(cat.name);  //null
		System.out.println(cat.age);   //0
		
		cat.name = "加菲猫";
		cat.eat();
	}
}

四、方法重载

概述:在同一个类中,方法名相同,参数列表(个数,类型)不同

好处:统一管理同一种功能的行为,当具有相同功能,但是表现形式不一样的时候,适合用重载,可以更明确功能,比如动物叫的方法,通过重载,可以体现为狗叫、猫叫

案例:

案例:小明吃东西;传的吃的参数可以吃饭,吃药,吃糖,饭,药等可以是引用类型;请设计一个案例

多类型的应用案例:类-Person,Rise,Yao

//案例:小明吃药,吃饭..
//分析:类:Student,Yao,Rise 方法:吃  对象-小明
class Student{
	//重载方法:类型不同
	public void eat(Rise rise) { //成员方法
		System.out.println("小明在吃饭");
	}
	public void eat(Yao yao) {
		System.out.println("小明在吃药");
	}
}
class Rise{  //米饭类
}
class Yao{  //药类
}
public class Test2 {
	public static void main(String[] args) {
		Student st = new Student();
		st.eat(new Rise());
		st.eat(new Yao());
	}
}

五、构造方法

概述:类似于成员方法,有调用和实现两个部分;区别在于,构造方法不带返回值,也不写void类型

分类:无参构造, 带参构造

作用:一般使用来初始化对象的属性的,或者每次创建对象的时候需要执行的操作

注意:当我们创建一个类的时候,如果什么构造方法都没写,那么编译器会为我们自动生成一个默认的无参构造函数,但是当我们写了构造函数,那么编译器便不会为我们生成一个默认的构造函数

六、this应用

this:指当前对象,也就是谁

调用this所在方法,this就代表谁

this的用法: this调属性,this调方法 , this调构造方法

//this调构造方法案例:this()-调无参构造  this(参数)-调带参构造
//案例:女朋友帮忙洗衣服
class Girl{
	String name;  
	int    age;
	public Girl() {
		System.out.println("无参...");
	}
	public Girl(String name) {
		this.name = name;
	}
	public Girl(String name,int age) {
		//this(); //必须放在构造方法的首句-不常用 this调构造只能写一句,因为都要在首句
		this(name); //this(带参)-不常用
		//this.name = name;
		this.age  = age;
	}
	
	public void wash() {
		System.out.println(age+"岁的女朋友"+name+"正在帮忙洗衣服");
	}
}
public class Test3 {
	public static void main(String[] args) {
		Girl fj = new Girl("凤姐", 18);
		fj.wash();
	}
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值