1.面向对象
面向过程:直面程序,程序较小
面向对象:交代任务,程序较大,分模块
1.1 概述:是软件开发方法,一种编程范式。
1.2面向对象和面向过程:
面向过程:侧重分步骤。
进行分析,第一步、第二步……
面向对象:侧重分模块。
做一件事先分析哪一步交给谁做。
总结:
面向对象优势:可扩展性,可维护性,灵活性,使程序耦合度降低。
缺点:性能比面向过程较差。
1.3构造方法:
静态属性调用:类名.静态变量 / 类名.静态方法(参数)
注:调用当前类中静态属性,类名可以省略。
成员属性调用:对象.成员变量 / 对象.成员方法(参数)
注:加前缀是为了找到这个方法。
创建对象: new:在堆内创建对象空间。 eg:Contructor_01 c = new Contructor_01();
调用构造方法: 方法名();
构造方法是每个类都有的,并且用于创建该类的对象。(可以重载)
注:如果该类中没有编写构造方法,编译器会帮我们生成一个无参构造。
如果该类中编写了构造方法,不管写的是不是有参,默认的无参构造都不再自动生成,
所以我们在写有参构造的时候,可以手动编写一个无参构造。
构造方法在new的时候自动执行。且只执行一次。new一次执行一次。
构造方法: 修饰符 方法名/类名(参数列表){方法体}
注:构造方法的修饰符只需要使用权限控制,不能使用static,
构造方法没有返回值,连void都没有,
构造方法的方法名必须和类名一致。
构造方法与成员方法的区别:
构造方法用于创建对象,并进行初始化。
成员方法用于完成特定功能。
静态方法与成员方法的区别(p49):
静态方法是公共的,谁都可以调用,
成员方法是私用的,调用需要创建对象,
1.4类和对象:
对象:是某一个具体的事物。
类:描述了这一类事物的属性和特征,进行抽象的模板。
对象就是类的实现,保存了属性的值。
静态变量和成员变量的区别(方法中如果调用成员变量/属性就是成员方法):
如果对象和对象之间有相同的属性 相同 的值,就使用静态变量。
如果对象和对象之间有相同的属性 不同(也可以相同) 的值,就使用成员变量。
成员方法:方法中需要使用成员属性的时候。
静态方法:方法中不需要使用成员属性的时候。
1.5实例化:1.加载对应类文件
2.new在堆内存创建空间
3.执行构造方法,对堆内存对象进行初始化
4.构造方法弹栈,并把堆内存地址返回给变量
1.6对象使用:
Student s1 = new Student(); //创建一个学生对象
s1.name = "张三"; //成员变量赋值
System.out.println(s1.name); //成员变量调用
System.out.println(s1.age); //没赋值的属性取默认值
1.7 Bean:
javaBean是一种Java语言写成的可重用组件,是一个类。
接着写
1.8常见异常:
// student = null;
// 当使用null值 访问成员属性的时候,会出现空指针异常
// Exception in thread "main" java.lang.NullPointerException
// System.out.println(student.age);
1.9对象调用静态属性
静态属性使用类名调用;
eg: System.out.println(Student.i);
也可以使用对象调用,在编译阶段会把对象转换为类名调用;所以该变量是不是null也没有关系了;
eg: Student.out.println(student.i); //等价于Student.i
1.10注释事项
1.调用静态成员:
静态方法中,无法直接使用非静态属性,需要使用对象调用才行。
2.传值和传引用
public static void main(String[] args){
// int i = 18;
// m1(i);
// System.out.println("main->" + i);
Animal a = new Animal(18);
m2(a);
System.out.println(a.age);
}
public static void m1(int i){
++i;
System.out.println("m1->" + i);
}
public static void m2(Animal a){
a.age++;
System.out.println(a.age);
}
}
3.区分成员方法和构造方法
public class OOP_06{
public static void main(String[] args){
OOP_06 o1 = new OOP_06();
//OOP_06 o2 = new OOP_06(15);
}
//构造方法
public OOP_06_1(){
System.out.println("无参构造");
}
//成员方法,成员方法可以和类名相同
//如何区分同名方法和构造方法呢? 看返回值,构造方法没有返回值,void都没有
public void OOP_06_1(int i){
System.out.println("有参构造");
}
oop包!