Java面向对象

目录 

7.1.编程思想

7.2Java中的类

1.创建一个类:

2.类中都有什么

3.成员变量与局部变量

 4.this关键字

 5.创建对象

6.使用对象,调用属性或方法


7.1.编程思想

1.面向过程:只考虑事物的发展顺序,不考虑参与在事物中的对象。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了

现在使用该思想的语言:c,汇编

2.面向对象:先考虑事物中存在那些对象,再考虑事物的发展顺序。是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为

现在使用该思想的语言:c++,java,javascript,python,c#...等等

比如:敲代码

                  对象:我,电脑

                  建立关系:我输入代码,电脑录入代码

3.对象 :所以客观存在的事物都是对象,万事万物都是对象   

4.类:多个事物抽象其相同点称之为类

5.类与对象的关系:

                                现实中:先有客观存在的事物,就是对象,才有类

                                代码中:先有类,才有对象      

7.2Java中的类

1.创建一个类:

/**
 * 
 * 语法:
 * 
 * 访问权限修饰符 class 类名{
 * 
 * 
 * }
 */
public class Cat {//创建一个猫类

}

2.类中都有什么

静态特征:属性

      作用:描述对象的静态特征

    写法:

public class Cat {//创建一个猫类
	
	public String name;
	public int age;//
	/**
	 * 语法:
	 * 访问权限修饰符  数据类型  属性名
	 * 
	 */

}

声名的位置要在类中,方法外。

别名:成员变量

注意:一个类可以有多个属性,也可以没有属性

动态特征(行为):方法

作用:描述对象的行为

	public void eat () {
		
	}
	/**语法:
	 * 访问权限修饰符  修饰符  返回值类型  方法名(形参列表){
	 *          方法体
	 * }
	 * 
	 * 
	 * 
	 */

修饰符还没学到,暂时不用,定义方法时其它情况与原来学的一样

定义位置:类中,方法外

别名:函数,成员方法,成员函数

构造函数:

作用:创建对象

语法:

	/**
	 * 语法:
	 * 访问权限修饰符 构造函数名(形参列表){
	 * 		方法体
	 * }
	 */
	public Cat() {
		
	}

注意:

        1.构造函数名与类名一致(大小写要一致)

        2.使用new关键字调用,表面上是new 后跟类名,实际上是调用了构造函数,只不过构造函数和类名名字一样

        3.一个类中可以有多个构造函数

        4.多个函数一定会形成重载关系

Cat aCat=new Cat();//使用new调用,

如果不写构造函数。java会自己生成一个构造函数,所以一般写代码建议自己写一个无参的,再写一个全参的。

无参构造函数:构造函数没有形参列表

全参构造函数:构造函数的形参列表需要传入该类的所有属性值

练习

定义一个猫类, 其中的属性有姓名,性别,年龄,毛色.(访问权限修饰 数据类型 属性名)

其中的方法有叫,吃(吃骨头).(访问权限修饰 返回值类型 方法名(形参列表){方法体})

在定义一个无参构造函数和一个全参构造函数(访问权限修饰符 类名(形参列表){方法体})


	public Cat() {
		
	}
	public Cat(String name,String sex,int age,String color) {
		
	}
	public void eat (String foodName ) {
		System.out.println(name+"吃"+foodName);
		
	

3.成员变量与局部变量

成员变量:属性

        定义位置:类中方法以外

        有默认值:基本数据类型默认为0,引用数据类型默认为null

        生命周期:随着对象的生成而生成,随着对象销毁而销毁可以使用访问权限修饰符

        使用范围:整个类中

局部变量:

        定义位置:类中,方法中或形参中

        没有默认值

        生命周期:随着方法的调用而生成,随着方法执行结束而销毁

        使用范围:声名的代码中

        不可以使用访问权限修饰符

局部变量与成员变量可以名称相同,默认使用局部变量,如下都默认为局部变量了

 4.this关键字

含义:谁调用this所在的方法,this就指向谁

作用:

        1.当局部变量与成员变量重名时,可以用于区分

 如图,此时就作以区分

        2.在方法中调用本类的属性或方法时,this可以忽略不写

        

 如图,两者效果一样。

        3.调用本类其它构造函数

                                必须在构造函数第一行

                                不能形成递归

                                this(实参列表)

不在第一行就报错

 5.创建对象

语法

	Cat tomCat=new Cat();
		/**
		 * 语法:
		 * 
		 * 类名  对象名=new 类名(形参列表);
		 * 
		 * 
		 * 专业:数据类型    对象名=new 构造函数名(实参列表);
		 * 
		 */

注意:

        如果一个类中没有构造函数,系统将会为其提供一个无参构造函数

        如果一个类中有构造函数,系统将不会提供

6.使用对象,调用属性或方法

属性:

tomCat.name="Tom";
		/**
		 * 获取  
		 * 		对象名.属性名
		 * 修改	
		 * 		对象名.属性名=值; 
		 * 
		 * 
		 */

方法:

tomCat.eat("牛奶");
		/**
		 * 语法:
		 * 
		 * 对象名.方法名(实参列表)
		 * 
		 * 
		 * 
		 */

总结:

                        写类;先写属性,在构造,最后方法

                        环境类:先创建对象,在建立关系,主函数在的那个类

7.对象的创建过程

数据类型  对象名 = new 构造函数名(实参列表);

        步骤:

                1.使用new关键字在堆内存开辟一片空间,用于存储该对象的属性与方法

                2.给对象属性赋值、初始值,基本数据类型赋值为0,引用数据类型赋值为null

                3.执行构造函数中的代码

                4.将堆内存中的地址(1中开辟的内存地址)赋值给栈的引用(对象名)

练习:

1,老师给我布置作业

2,我养了一只小狗叫旺财,我给他喂食,他给我看门

3,张女士养了一只金毛叫布丁,李女士养了一只泰迪叫小不点

4,老皮(猫)抓住了碎怂(老鼠),布丁在旁边说抓的好,小不点说布丁说的对,碎怂说你俩是不是闲

可以分析得

人类

             属性: 姓名   性别

             方法: 布置,喂东西,养

狗类

             属性:品种,姓名

             方法 :说     

猫类     

              属性:姓名

              方法:抓

鼠类       属性:姓名

              方法:说

                        


public class Hren {
	public String nameString;
	public String sexString;
	
	public Hren(){
		
	}
	public Hren(String namString,String sexString) {
		this.nameString=namString;
		this.sexString=sexString;
		
		
		
	}
	
	public void buZhi(Hren b) {//布置
		
		System.out.println(nameString+"给"+b.nameString+"布置作业");
	
	}
	
	public void yAng(Hdog b) {//养
		
		System.out.println(nameString+"养了一只"+b.name);
		
	}
	
	public void wEi(Hdog b) {//喂了
		
		System.out.println(nameString+"给"+b.name+"喂食");
		
	}

}

public class cat1 {
	public String name;
	
	public cat1() {
		
	}
	
	public cat1(String name) {
		this.name=name;
		
	}
	
	public void shuo(String info) {
		System.out.println("name"+name);
	}

}
public class Hlaoshu {
	public String Name;
	public Hlaoshu() {}
	public Hlaoshu(String Name) {
		this .Name=Name;
	}

	public void sad(String a) {
		System.out.println(Name+"说:"+a);
	}
}
public class homework1 {
	
	public static void main(String[] args) {
		Hren ganLei=new Hren("老师","男");
		Hren zhangNv=new Hren("张女士","女");
		Hren liNv=new Hren("李女士","女");
		Hren mE=new Hren("我","男");
		
		Hdog wangCai=new Hdog("旺财","土狗");
		Hdog buDing=new  Hdog("布丁","金毛");
		Hdog xiaoBu=new Hdog("小不点","泰迪");
			
		ganLei.buZhi(mE);
		
		mE.yAng( wangCai);
		mE.wEi(wangCai);
		wangCai.kAn(mE);
		
		zhangNv.yAng(buDing);
		liNv.yAng(xiaoBu);
		
		Hcat laopi=new Hcat("老皮");
		Hlaoshu suisong=new Hlaoshu("碎怂");
		
		laopi.zhuA(suisong);
		buDing.sad("抓得好");
		xiaoBu.sad("布丁说的对");
		suisong.sad("你俩是不是闲的");
		
		
	
		
		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值