面向对象是一种编程思想
OOP(object oriented programming),面向对象编程
POP(procedure oriented Programming),面向过程编程
FP(functional programming),函数式编程
面向对象编程的基本特征:
封装 继承 多态
事物(对象) ——> 抽象 ——>类
class Classname(){
//实例对象
void method(){
//方法
}
}
类与对象的关系:
类是对一类事物的描述,是抽象的
对象是一类事物的实例,是具体的
类是对象的模板,对象是类的实体
引用类型的变量,简称引用。
引用是可以指向对象的,简称引用指向对象。
//方法
【修饰符】 返回类型 方法名(【参数列表】)【抛出异常的类型】{
//code
}
修饰符:
1.访问控制修饰符
公共访问控制符public、保护访问控制符protected、缺省默认访问控制符、私有访问控制符private
2.非访问控制修饰符
抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、同步方法控制符synchronized
返回类型如果不为void,必须要有返回值,方法要有return
参数传递:
形参: 形式上的参数
方法定义括号内定义用来接收外部实际参数的参数
实参: 实际上的参数
调用方法是被传入的参数
形参实参在jvm的栈里面有不同的内存空间
要注意形参与实参存储的是常量还是地址(对象)(基本类型传递值还是引用类型传递地址)
对象在jvm内存中,存储的是堆中类数据的地址
例如:
public class Test{
//该方法中,改变参数当前的值
public static void changeNum(int a){
a = 10;
}
public static void main(String[] args){
int a = 1;
System.out.println("before: a = "+a);
//传参之前,变量a的值
changeNum(a);
System.out.println("after: a = "+a);
//传参之后,变量a的值
}
}
before a=1 after a=1
public class Test{
//该方法中,改变引用s所指向对象的name属性值
public static void changeName(Student s){
s.name = "tom";
}
public static void main(String[] args){
Student s = new Student();
System.out.println("before: name = "+s.name);
//传参之前,引用s所指向对象的name属性值
changeName(s);
System.out.println("after: name = "+s.name);
//传参之后,引用s所指向对象的name属性值
}
}
before name = after name =tom
this
this关键字的使用场景:
- 区别成员变量和局部变量
- 调用类中的其他方法
- 调用类中的其他构造器
跟“我“一样,谁说的就是谁,当前对象
public class Student{
public void sayHello(){
this.show();//这个this就表示当前类的对象stu
}
public void show(){
}
}
public static void main(String[] args){
Student stu = new Student();
stu.sayHello();
}