面向对象(Object-Oriented Programming,OOP)
- 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是,具体到微观操作,任然需要面向过程的思路去处理。
- 本质:以类的方式组织代码,以对象的组织(封装)数据
- 抽象
- 三大特性:封装、继承、多态
回顾方法与加深
- 方法的定义
- 修饰符
- 返回类型
/*
修饰符 返回值 方法名(...){
//方法体
return 返回值;
}
*/
public String sayHello(){
return "hello,world";
}
public void hello(){
return;
}
public int max(int a ,int b){
return a>b ? a:b;
}
- break:跳出switch,结束循环和 return 的区别
- 方法名:注意规范
- 参数列表:(参数类型,参数名)…
- 异常抛出
-方法的调用
- 静态方法:可以进行跨类调用—【static】—和类一起加载的
package com.oop.demo01;
//学生类
public class Student {
//静态方法
public static void say(){
System.out.println("学生说话了");
}
}
package com.oop.demo01;
public class Demo02 {
public static void main(String[] args) {
Student.say();
}
}
- 非静态方法:实例化这个类,开辟空间存入该类,然后调用类的方法
package com.oop.demo01;
//学生类
public class Student {
//静态方法
public void say(){
System.out.println("学生说话了");
}
}
package com.oop.demo01;
public class Demo02 {
public static void main(String[] args) {
//实例化这个类 new
//对象类型 对象名 = 对象值;
Student student = new Student();
student.say();
}
}
注意:非静态方法和静态方法在同一类中存在调用问题,静态方法不可调用非静态方法!!!原因:静态方法的存在时间是类文件创建的创建时间,而非静态方法时需要类实例化后才出现,所有一个已经有的方法去调用还未成型的方法时不可以的
- 形参和实参
package com.oop.demo01;
public class Demo03 {
public static void main(String[] args) {
int add = Demo03.add(1, 2); //实参add,静态直接调用
System.out.println(add);
}
public static int add(int a,int b){ //形参a,b
return a+b;
}
}
- 值传递和引用传递
//值传递
package com.oop.demo01;
public class Demo04 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);
change(a);
System.out.println(a);
}
public static void change(int a){ //只改变形参
a = 10;
}
}
结果显示为:
1
1
//引用传递:对象,质还是值传递
package com.oop.demo01;
public class Demo05 { //只能有一个public,但可以有多个class
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
Demo05.change(person);
System.out.println(person.name);
}
public static void change(Person person){
person.name = "山东";
}
}
//定义了一个Person类,有一个属性:name
class Person{
String name;
}
结果显示为:
null
山东
- this关键字:当前这个类