1. 面向对象: 对于现实世界的拙劣模仿,妄图通过对象描述整个世界
OO: Object oriented 面向对象英文
ooa: 面向对象的分析 (analyse)
ood: 面向对象的设计 (design)
oop: 面向对象的编程 (program)
2. 面向对象的三大特征:
封装 继承 多态 (抽象)
3. 类和对象: java语言是纯面向对象的语言,所有的代码都要写到类中
类和对象的关系:
类是抽象的,对象是具体的
类是模板,对象是用这个模板创造出来的事物
类是一种数据类型,是引用数据类型
一种自定义的数据类型
int i = 10;
Person p = new Person();
假设,现在要存储全班同学的姓名,年龄和成绩,应该怎么设计?
4.如何创建对象:
类名 对象名 = new 类名();
5.类中可定义的内容
成员变量
成员方法
静态变量
静态方法
局部变量
构造方法
6. 成员变量和局部变量的区别:****
局部变量: 定义方法中或者是方法的参数列表上的变量
局部变量存放在栈内存中,没有初始值
局部变量随着方法的调用而创建,随着方法的结束而消失
成员变量: 定义在类中方法外的变量,并且没有static修饰
成员变量存放在堆内存中,有初始值
成员变量随着对象的创建而产出,随着对象的消失而消失
7.成员变量是属于对象的还是属于类的?
成员变量是定义在类中的,
他是属于对象的?
随着对象的产生而产生,随着对象的消失而消失
成员变量是使用对象调用的
每创建一个对象,都生成一套成员变量
8.java中的内存分析
栈: 局部变量(定义在方法中或者方法参数列表上的变量),方法的执行。没有初始值
堆: new 出来的东西,有初始值。当没有栈内存中的变量指向时,就会被回收掉
方法区:
class区: 存放字节码文件
静态区: 存放用static修饰的
9. 匿名对象
没有名字的对象
方法只调用一次: new 类名().方法名
作为参数传递
10.形参和实参
形参: 定义方法时,参数列表上的变量
实参: 调用方法的时候,传递进去的参数
基本数据类型做参数,形参的改变不影响实参的值
引用数据类型做参数,形参的改变影响实参的值(String和包装类除外)
11.给对象赋值的三种方式: ****
对象名.成员变量 = 要赋的值;
调用set方法进行赋值
调用有参数的构造方法
12.封装:
成员变量私有化,提供getters和setters
private:用来修饰方法和变量,被private修饰的方法和变量只能在本类中访问
this:指代的是本类的对象, this所在的方法正在被哪个对象调用,this指代的就是哪个对象
13. 构造方法: *****
我们在使用new创建对象的时候,就会调用类中的构造方法
系统默认会为我们提供无参数的构造方法,如果我们自己写了构造方法,系统则不再为我们提供
构造方法的格式:
修饰符 类名(参数列表){
方法体;
}
构造方法的方法名和类名相同,没有返回值,连void都没有。 构造方法是可以重载的
14.javabean 规范:
1. 成员变量私有化
2. 提供getters 和settters
3. 提供无参构造方法
4. 提供有参构造方法
15. *****
public class Person {
String name = "张三";
public void print(){
System.out.println(name);
}
public void print(String name){
System.out.println(name);//就近原则
}
public void print1(String name){
System.out.println(this.name);
}
public static void main(String[] args) {
Person p = new Person();
System.out.println(p.name);//张三,默认值是张三
p.name = "李四";
p.print();//李四,因为已经被修改成了李四
p.print("王五");//王五,就近原则,所以打印的是局部变量的name
p.print1("赵六");//李四,this代表的是成员变量
}
}
16. main方法中的数组
args: 用来接收键盘录入的数据
javac不变
java 类名 参数1 参数2 参数3 ...
17.this关键字
this: 指代的是本类的对象
this所在的方法正在被哪个对象调用,this就指代哪个对象