java零基础5--面向对象的编程(1)

什么是面向对象的编程?

一、从语言角度出发
c语言:面向过程的
c++:一半面向过程一半面向对象的
java:完全面向对象的
二、什么是面向过程?
答:注重的是实现某一个功能的步骤,重要的是每一步与每一步之间的关系,形成一个个子模块,对于小型项目来说,采用面向过程的编程,效率更高
三、什么是面向对象?
答:先构建一个整体,里面有整体共同的数据,以及可以操作数据的方法,在编写时,把这一个大的整体划分为一个个小的对象,每个对象都是整体的一部分,对这些对象进行编程,更加符合人类的思维,这也是java和Python相对于c简单易学的原因。
四、java中面向对象的三大特点:
很重要!!!每一点都需要掌握,分别是封装,多态,继承。

如何定义一个类?

类,就相当于我们前面说的整体,定义了这个整体之后,我们才能创建出整体的对象!

[修饰符列表] class 类名{
类的属性;
类的方法;
}
其中,属性在代码中是变量的形式,方法则是描述的是这个整体的共同行为

通过变量的声明位置,我们还可以对变量进行分类
在方法中声明的:局部变量(方法结束后被释放)
在方法体外声明的:成员变量(就是我们上面说的属性)

案例:创建一个学生类

观察学生有什么共同的属性?
学号,姓名,年龄,性别,家庭地址等等,那么这些共同属性就是我们学生类中的变量
共同的行为:去上学,那这就是我们在学生类的方法

public class student
{
	int xuehao;//这种成员变量又叫实例变量,要通过创建对象才能访问。

	String xingming;

	int age;

	int xingbie;

	String zhuzhi;

    public static void goschool{//描述整体的行为
           System.oit.println("学生去上学");
    }
}

成员变量的默认值

当我们通过类这个整体去创建对象时,那么这个对象之中就有我们在整体中定义的成员变量,倘若没有进行赋值,系统会给这些成员变量赋一个初始值
byte:0
int:0
short:0
long:0
float:0.0
double:0.0
char:\u0000
boolean:false
对象:null

对象的创建与使用

基础语法:
类名 变量名 = new 类名();
访问对象中的成员变量:
变量名.成员变量名

就拿我们刚刚说的学生类来举例子

//定义一个学生类
student s1 = new student ();
//定义第二个
student s2 = new student ();

//访问实例变量
        //由于我们没有赋值,所以这里输出的都是默认值
        System.out.println(s1.xuehao);//0
		System.out.println(s1.xingming);//null
		System.out.println(s1.age);//0
		System.out.println(s1.zhuzhi);//null
		//对对象中的成员变量进行赋值
		s1.age=100;
		s1.xingming="张三";
		System.out.println(s1.age);//100
		System.out.println(s1.xingming);//张三
		s1.zhuzhi="M78星云";
		System.out.println(s1.zhuzhi);//M78星云

注意,创建的对象时,用的new运算符,实际上作用是在堆内存中开辟一块空间,而我们定义的变量名只是保存这块堆内存中的地址而已,接下来我们看一下创建对象是堆内存的内存变化。
(图片来源于动力节点杜老师的课程,本人不会画画 QAQ)
在这里插入图片描述
所以,我们创建的对象本质上和我们所熟悉的int等是一样的,都是保存了一个值而已,那么对象之间也可以相互赋值

        student s3 = s1;//把s1储存的地址赋值给s3,相当于int a = 100;
        //输出结果同上
        System.out.println(s3.age);
 		System.out.println(s3.xingming);
		System.out.println(s3.zhuzhi);

构造方法

构造方法是类中必不可少的元素
作用:在创建对象时对对象中的成员变量赋初值
注意(构造方法):
1.修饰符列表目前统一写:public
2.构造方法名和类名必须一致
3.构造方法名不需要返回值类型,也不能写void。
4.通常在构造方法体中属性赋值,完成初始化
5.重点:当一个类没有提供任何构造方法,系统会提供一个无参数的构造方法
6.调用构造方法:使用new运算符,new 构造方法名(实际参数列表)
7.构造方法的语法结构:[修饰符列表] 构造方法名(形参列表){
构造方法体;
}
8.当一个类中手动提供了构造方法,就不在提供无参数构造方法了,若还想调用无参数的构造方法,需要在手动写一个
9.有参数的和无参数的构造方法都可以调用
10.构造方法也支持前面说的方法重载

案例:

class user
{
	int id;
	String name;
	int age;
	boolean sex;
	public user (){//无参数构造方法,可以为所有的成员变量附上初值
		/*
		id=0;
		name=null;
		age=30;
		这三行代码被省略了!
		*/
	}

	//有参数的构造方法
	public user (int huiyuanhao,String xingming){
		id=huiyuanhao;
		name=xingming;
		//没有被赋值的实例变量系统都会进行默认赋值
	}
}

接下来,学习如何调用不同的构造方法来创建对象

public static void main (String[] srgs){
		//调用无参数的
		user i = new user();
		System.out.println(i.id);//0
		System.out.println(i.name);//null
		System.out.println(i.age);//0

		//调用不同的构造方法来创建对象
		user j = new user (111,"张三");
		System.out.println(j.id);//111
		System.out.println(j.name);//张三
		System.out.println(j.age);//0
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值