Java学习第九天
周总结:
1.面向对象:把不同的功能封装在不同的对象中,用到什么功能就找相应的对象
首先要定义描述对象的类,类是用来创建对象的
new person()----->jvm使用的是person.class来创建对象的,字节码中定义了说什么,对象中就有什么
2.成员变量:作用域是整个类,有默认值,在堆中开辟内存
3.局部变量:作用域是所在大括号,没有默认值,在栈中开辟内存
4.jvm加载person().class到方法区,(用谁就加载谁,加载到内存),main函数入栈,执行main函数中的代码
在栈中开辟内存,给ren这个局部变量,在堆中开辟内存(内存的大小依据成员变量)
5.构造函数:专门用来创建对象的,一个类中如果没有构造函数,那么系统的会自动加一个构造函数:类名(){}
自己加入了构造函数,那么系统就不会自动加入构造函数了
函数名和类名相同,不能有返回值类型
可以利用构造函数实现属性的赋值
6.this:是一个引用,总是指向当前正在被使用的对象
是构造函数之间的调用,必须卸载第一行的位置
7.super
8.static:修饰符,可以修饰成员变量,成员方法,成员内部类
修饰成员变量:成员变量的值可以被所属类的所有对象共享
修饰成员方法:该方法没有用到所属类的任何非静态成员
被static修饰的,随着类的加载就进入方法区的静态区
静态之呢个使用静态,非静态什么都可以使用
9.应用:工具类 javadoc -d 目录 xx.java
10静态代码块:static{}
随着类的加载而执行,只执行一次,优先于main的执行
构造代码块:
{}
对象一创建就执行,优先于构造函数的执行
11.单例设计模式:保证一个类只有一个对象
1 class yhw{ 2 private yhw(){}//不能new对象 3 private static final yhw y=new yhw(); 4 public static yhw getinstance() 5 { 6 return y; 7 } 8 }
12.继承:多个对象共性的东西提取到一个类中。extends 单继承,代码的复用,父子关系
成员变量:同名:用的是子类自己的 如果使用父类的:super.num
成员方法:重写:子类出现了和父类一样的方法,只要创建的是子类的对象,使用的就是子类的
构造函数:创建子类对象时,总是先执行父类的构造函数,在执行子类的构造函数
系统自动在子类构造函数的第一行加入了super()------>调用父类的空参构造函数
13.为了利用父类中给属性赋值的代码,super(name,age,address);
注意:每个类都要定义空参的构造方法,防止子类出错
14.final:可以修饰类,方法,成员变量,局部变量
15.抽象类:对多个对象提取父类的过程中出现的
16.接口:
1 interface inner 2 { 3 public static final int num=9;//常量,没有变量 4 public abstract void show(); 5 } 6 class demo implements inner 7 { 8 }
接口就是特殊的类
17.多态:fu f=new zi();
成员变量:能访问的是父类的,结果看父类
成员方法:能访问的是父类的,结果看子类
静态:看父类
18内部类:成员内部类、静态内部类、局部内部类、匿名内部类