1.成员变量与局部变量的区别
成员变量:Java会默认初始化,大多数是0,Boolean默认false,引用变量默认是null
局部变量:先定义,后初始化,才能使用
2.构造方法
当未定义构造方法时,系统会默认一个无参数的构造方法在类中
当定义了一个有参数的构造方法时,系统不会默认一个无参数的构造方法在类中,
3.内存分析
堆,栈,数据区,代码区
局部变量存放在栈里,new出来的对象存放在堆里
同一类的每个对象共享该类的方法,类的方法只是一段代码,存在代码区,只有调用时才开辟内存
4,static成员变量
对于该类的所有对象来说,static成员变量只有一份,静态变量存放在数据区
5.如何生成jar包
cmd:
到指定目录下
输入:jar -cvf test.jar *.*
6.访问权限
private:同一个类的内部可以访问
default:同一个类,同一个包
protected:同一个类,同一个包,同一个子类,子类继承父类所有权限的变量,但只能访问protected和public
public:任何地方
7.重写与重载
重载:参数类型,参数个数不同--方法名称,返回类型相同
重写:方法体不同--参数类型,参数个数,方法名称,返回类型相同
8.继承中的构造方法
(1)子类的构造过程中必须先调用父类的构造方法,如果调用super,必须写在子类构造方法的第一行
(2)如果子类的构造方法中没有显示的调用父类的构造方法,系统默认调用父类无参数的构造方法
(3)如果子类的构造方法中没有显示的调用父类的构造方法,而父类中没有无参数的构造方法,编译出错
9.对象转型
父类引用指向子类对象,父类引用只能访问子类对象中父类部分的成员
父类引用不可以访问子类对象新增加的成员(属性,方法)
10.多态存在的条件
要有继承,要有重写,父类引用指向子类对象
11.抽象类
当一个类里面有抽象方法时,这个类必须抽象类
抽象类必须被继承
抽象方法必须被重写
抽象类不能被实例化
12.final
final的变量不能改变,final定义的变量就是常量,这样的常量一定要初始化,不然会报错。
final的方法不能重写
final的类不能继承
13.Interface
接口是一种特殊的抽象类,只包含常量和方法的定义,没有变量和方法的实现
常量默认加 static final,是为了修正C++中多继承的错误
方法不需要加 abstract 默认定义成抽象方法 14.匿名类的用法 类短小,不涉及将来的拓展,不涉及重要的业务逻辑 15.简单数据时值传递,String,对象类型是引用传递 16. 实例1:主方法中调用,method(null),优先调用子类 method(String s) method(Object o) 实例2:出错,因为String和StringBUffer没有继承关系,系统不知道调用哪个,编译期就会报错 method(String s) method(StringBuffer sb) 17. 类中变量分为:静态变量(类变量),成员变量,局部变量 类中方法分为:静态方法(类方法),构造方法,实例方法(非静态的方法) 18.静态方法和实例方法都放在代码区 实例方法可以调用静态方法,静态变量,实例方法,实例变量 静态方法只能调用静态方法,静态变量 理由: 类在加载到内存时,生成类变量,分配类方法入口地址,程序退出时释放 实例变量和实例方法,只有在产生一个对象的时候才有存在的价值,所以在类方法里,调用还不确定是否有实例对象的实例变量时没有意义的 18.优先顺序:静态块--》代码块--》构造方法 静态块:执行一次,主要用于初始化静态变量,如果这个类时单例,没办法调用构造方法,而又要给类中的静态变量赋值,而且不止简单赋值,而是从数据库取值,那么就用静态块 代码块,构造方法:只要这个类产生一个实例就调用一次,主要用来出事话非静态变量,一般用构造方法 19.构造方法重载 public A(int a) { this.a = a; } 重载: public A() { this(默认值); } 20.class只有两种修饰符:默认和public,修饰默认时,别的包的类不能用这个类。 21.子类变量名和父类的变量名一样时,父类的变量被隐藏,不过可以用super.变量名,调用父类的隐藏的变量 22.protected和默认修饰符的区别: 默认:同一个包内可以访问,其他包的子类不能访问 protected:以上两样可以都可以访问。
|