总结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、抽象类被继承时,子类必须重写全部的抽象方法,或者将子类声明为抽象类;普通类继承普通类的时候,没有任何限制;

 

posted @ 2021-12-06 08:51  汪汪汪QVQ  阅读(92)  评论(0)    收藏  举报