Day9.1 面向对象
面向对象
-
java的核心就是面向对象编程(00p, Object Oriented Programming)
-
面向过程就是第一步做什么第二步做什么,适合处理简单的问题;面向对象就是分类的思维模式,首先解决需要哪些分类,然后对分类单独思考,最后对某个分类下的细节进行面向过程的思考。
-
-
本质:以类的方式组织代码,以对象的组织(封装)数据。
-
抽象。封装、继承、多态。
静态/非静态方法
-
static加以区分
public class Demo02 {
//静态方法 加上static;非静态方法 没有static
public static void main(String[] args) {
//运行say方法,若是static就直接Students.say();(类名.方法名)即可
//非static:实例化这个类new
//对象类型 对象名 = 对象值
//new Students().say();或者
Students abc = new Students();
abc.say();
}
}public class Students {
public void say(){
System.out.println("学生说话了。");
}
} -
public class Demo02 {
public static void main(String[] args) {
}
//当a方法和b方法都是静态方法或非静态方法的时候二者可以互相调用;
//当a方法和b方法一个静态一个非静态时无法互相调用,因为静态方法是和类一起加载的,而非静态方法需要类实例化后才存在
public static void a(){
b();
}
public static void b(){
a();
}
} -
重载与静态/非静态方法的调用
public class Demo03 {
public static void main(String[] args) {
//实例化方法
Demo03 abc = new Demo03();
int a = abc.add(1,2);
System.out.println(a);
System.out.println("=====================");
//注意一:这里Demo03没有括号
//注意二:静态方法也可以被实例化,如下可以写成int b = new Demo03().add(1,2,3);
int b = Demo03.add(1,2,3);
System.out.println(b);
}
public int add(int a, int b){
return a+b;
}
public static int add(int a, int b, int c){
return a+b+c;
}
} -
java是值传递
//值传递
public class Demo04 {
public static void main(String[] args) {
//这里的a是实际参数,而下面那个方法中的a是形式参数,并没有返回结果
int a = 1;
System.out.println(a);
Demo04.change(a);
//输出结果为1
System.out.println(a);
}
//返回值为空
public static void change(int a){
a = 10;
}
} -
难点:引用传递
public class Demo05 {
public static void main(String[] args) {
Student student = new Student();
//输出结果为null
System.out.println(student.name);
Demo05.change(student);
//输出结果为蜂皇浆兵
System.out.println(student.name);
}
public static void change(Student student){
student.name = "蜂皇浆兵";
}
}
//一个类可以有多个class,只有一个public
//定义一个Student类,有一个属性
class Student{
//String默认值为null
String name;
} -