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