总结2
静态变量特点:
1、被static修饰的变量静态变量,非静态变量叫实例变量
2、在内存中只有一个,在加载类的时候创建,被所有方法和对象共享
3、其他类中,可以直接通过类名访问(可以通过类名直接调用)
静态方法特点:
1、静态方法中不能使用this和super,this当前对象
2、不能直接访问所属类的实例变量和实例方法 , 面试题,静态方法能不能访问非静态资源? - 可以的
3、可直接访问类的静态变量和静态方法,静态能够调用静态资源,不能直接调用非静态资源
4、可直接通过类名.方法名访问静态方法
5、规定:静态只能调用静态,非静态只能调用非静态
静态方法能不能调用非静态方法? - 可以的
静态方法能不能直接调用非静态的方法? - 不可以
静态变量和实例变量的比较:
类变量(静态变量)
被static修饰的变量
在内存中只有一个拷贝
类内部,可在任何方法内直接访问静态变量
其他类中,可以直接通过类名访问
实例变量
没有被static修饰的变量
每创建一个实例,就会为实例变量分配一次内存,实例变量可在内存中有多个拷贝,互不影响
必须通过对象调用
子类不能继承父类的情况:
1、private修饰的属性和方法
2、子类和父类不再同一个包下,不能继承默认访问权限的成员
3、不能继承构造方法
方法重写和重载的区别
重载:同类同名不同参,与其他无关(同一个类中,方法名,参数列表不同--个数不同,类型不同,顺序不同)
重写:在子类和父类中存在,同名同参同返回值同访问修饰符的方法(返回值可以是其子类,访问修饰符不能比父类更严格)
抽象方法特征
1:抽象方法没有方法体,只有方法的声明;
2:如果一个类中存在抽象方法,那么这个类必须声明为抽象类;abstact修饰的类,抽象类不能创建对象
3:抽象类不能被实例化;
4:抽象方法必须在子类中被重写,除非子类也是抽象类;
1、抽象类为什么不能实例化?- 不能实例化,抽象类中可能会存在抽象方法,抽象方法是不完整的方法,没有方法体,如果被调用,完全没有意义
2、抽象类中是否可以存在构造方法? - 可以存在,他不能实例化,构造方法有什么用? -- 留给子类调用的
3、抽象类和抽象方法的关系? - 抽象方法必须在抽象类中进行声明,抽象类中可以存在抽象方法,也可以不存在
4、什么是抽象类? - 被abstract修饰的类就是抽象类,特点:不能实例化
5、抽象类能不能继承普通类? - 可以。
6、普通类能不能继承抽象类? - 可以
7、是否存在抽象的构造方法? - 不存在,
8、是否存在抽象的静态方法? - 不存在
9、抽象类中是否存在静态方法? - 可以存在的,静态方法不需要对象来调用,直接通过类名既可以直接访问
10、关于继承,跟是否抽象无关,都可以互相去继承
抽象方法和普通方法的的区别!
1、抽象方法没有方法体,普通方法一定要有方法体
2、抽象方法一定要有abstract修饰,普通方法一定不能有
3、抽象方法只能在抽象类中,普通方法既可以在抽象类中也可以在普通类中
4、被继承时,抽象方法必须要被子类重写,普通方法没有要求
抽象类和普通类的区别?
1、抽象类不能被实例化,普通类可以
2、抽象类需要有abstract修饰,普通类不能
3、抽象类可以有抽象方法,普通类一定不能存在抽象方法
抽象类和抽象方法的关系
1:有抽象方法的类,一定是抽象类,但抽象类不一定有抽象方法;
2:一个类继承抽象类,必须重写抽象类中的所有抽象方法,如果没有全部重写,那么子类必须声明为抽象类
3:没有抽象构造方法,也没有抽象静态方法
4:抽象类中可以有构造方法,创建子类的实例时调用
抽象类和普通类的区别
1、语法不同,抽象类是被abstract修饰的类,普通类一定不能被abstract修饰;
2、抽象类中可以有抽象方法,普通类一定不能有抽象方法;
3、抽象类不能被实例化,普通类可以去实例化调用;- 创建对象
4、抽象类被继承时,子类必须重写全部的抽象方法,或者将子类声明为抽象类;普通类继承普通类的时候,没有任何限制;
浙公网安备 33010602011771号