Java面向对象编程-面向对象+类与对象

面向对象

1. 面向对象:
按照现实世界的特点,把复杂事物抽象成一个对象;他们都具有自己的状态和行为,通过对消息的反映来完成一定任务
程序 = 对象+消息

2.面向对象的三大特性:

  • 封装:将信息属性和方法的实现隐藏起来,值提供使用接口(加强了安全性)

  • 继承:将已有类中的属性和方法保留,可在加上自己特有的属性和方法(就像现实生活中的父子关系:儿子继承了父亲的基因,同时又可能拥有自己独特的基因)
    通过父子之间的关系,我们可以总结出继承的特点;儿子只能有一个父亲(单继承),但是父亲可以有多个儿子(多实现)
    单继承是java的一个不足之处,但接口可以解决这个不足(后续讲到接口时详细介绍)

  • 多态:指重名但有不同的具体实现的多个方法同时存在于同一个程序中;有两种方法:重载和覆盖

类与对象

类(class):
对一组具有相同属性,操作和关系的同类事物的描述.是抽象的概念上的意义;

对象(Object):
是实际存在的该类事物的每个个体,因而也称实例(instance);

类的定义:
主要定义类的属性(变量),方法和关系
类的构成:
类声明和类体
格式:

修饰符  class  类名  [extends  父类名]  [implements  接口名]{
	修饰符 类型 成员变量;
	.........
	修饰符  类型(返回值)  方法(参数列表){
		类型 局部变量;
		方法体;
		.........
	}
}
例子:
public class Test {
	//共有的test类
	//方括号内为可省略部分
}

方法(函数)的定义:

修饰符  类型(返回值)  方法(参数列表){
	类型 局部变量;
	方法体;
	.........
}
例子:
public class Test {
	int a;//这是8种基本类型变量
	public void t1(){
		
	}
	public int t2(){
		int i = 1;
		return i;
	}
	public void t3(int a){//这里的变量a是形参(形式参数)(是一个局部变量)
		//this.a表示成员变量a
		//a表示t3的局部变量
		this.a = a;
	}
	public static void main(String[] args) {
		Test t1 = new Test();//创建对象
		t1.t3(2);//这里的2为实参(实际参数)
	}
  • 修饰符(简单介绍,后面详解):public公有的 , 默认 , protected受保护的 , private私有的
  • 返回值:void表示无返回值,如果有返回值函数中必须存在return语句,如例子中的t2方法(函数)
  • 参数(局部变量):
    形参:函数定义是的参数
    实参:函数调用是传递的参数

变量(对象):

  • 声明 : Test t1;
  • 定义 : Test t2 = new Test();
  • 实现 : t1 = new Test();(这一步也叫做对象的实例化)
    注: 引用类型的变量,可以叫做变量,也可以叫做对象(引用类型就是上面的Test t1就引用了Test类声明变量,这种变量只有经过实例化才可以使用)(t1就是Test类的一个对象)

对象的调用方法:

  • 对象名.变量名
  • 对象名.方法名

对象比较:==和equals区别

  • == :比较两个引用数据类型句柄是否是指向同一对象,即这两个句柄所指向的内存地址是否一样
    比较两个相同的基本数据类型值
  • equals :比较两个引用数据类型句柄所指的对象的内容是否一样;是比较两个对象,而非两个基本数据类型的变量

this关键字:
this代表当前对象
上面的例子中方法t3中的形参(局部变量)与Test类中的变量同名

这里有一个优先级问题:当函数内部有同名局部变量时,局部变量的优先级要大于成员变量(也就是Test中的变量a)
在t3方法中对Test的变量a赋值时,就需要this进程成员变量和局部变量的区分

在构造函数中调用其他构造函数

重载和覆盖

重载(函数的重载):

  • 同一个类中函数名称相同
  • 参数的个数或者类型不同
例子:
public class Test {
	public void setAge(){
		
	}
	public void setAge(int a){
		
	}
	//计算两个数的和
	public int sum(int a , int b){
		return a+b;
	}
	public float sum(float a,float b){
		return a+b;
	}
}

函数的重载比较重要,在很多地方都有应用,比如下一节要讲述的构造函数的重载是一个很重要的应用

规范

这部分不是必须的,但是符合这些规范会对以后有很大的好处

  • 类的命名规范 (不这么写也是可以的程序不会报错)
    1.定义类时,类名为大写字母开头
    2.成员变量与函数名称小写字母开头

  • 标识符命名规则(不满足下面的要求程序会报错)
    1,可以有数字,字母和下划线组成,不能由数字开头
    2.区分大小写
    3.不能使用关键字或者保留字
    4.不能有特殊字符

这篇文章是我在Java学习的第一篇笔记,后续还会继续更新,希望对大家有些用处.
这其中有老师的笔记和一些我个人的理解
文章内容的顺序是我自己总结的, 有不足之处希望萌新和大佬们批评,只有批评才能进步
最后谢谢大家,有一起学习的小伙伴可以给我留言

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值