#访问修饰符
1,类的完整格式
访问修饰符 修饰符 class类名称 extends 父类名称 implement接口名称{}
2.方法的完整格式
访问修饰符 修饰符 返回类型 方法名称(参数列表) throws 违例列表{}
3,变量的完整格式
访问修饰符 修饰符 数据类型 变量名;
4,static 修饰符
意思:静态,用来修饰成员变量和成员方法,也可以形成静态static代码块
被static修饰的成员变量和成员方法独立于该类的人和对象,也就是说,他不依赖类的实例,被类的所有实例共享。
只要这个类被加载,java虚拟机就能根据类名在运行时数据区的方法内定找到他们,
因此,statc对选哪个可以在他的任何对象创建之前访问,无需引用任何对象,
总结:static修饰后,在其他类或方法中,可以用类名.方法名 或类名.属性名 直接操作,
静态方法的好处,使用方便,随时调用,优化方法的复用性,
静态方法的缺点,占用静态空间无垃圾回收机制,除复用性强的方法,尽量避免使用静态方法,
静态变量的用处,一个类被实例化为多个对象时,共用一个变量。比如:产品的名称。
补:静态资源归属于类,创建前直接开创了一个空间
变量
1,类变量:
a,由static修饰的变量称为静态变量或类变量。
b,用静态修饰 那么该内容被所有对象所共享,此处所说的共享,是指所有对象使用同一个变量,而非允许所有人使用,权限是由权限修饰符管理
2,成员变量:
a,成员变量定义在类中,在整个类中都可以被访问,
b,成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
c,成员变量有默认初始化值
3,局部变量:
a,局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效
b,局部变量存在与栈内存中,作用的范围结束,变量空间就会自动释放,
c,局部变量没有默认初始化值。
注:成员变量和局部变量的区别:有无默认初始化值,成有,局无。
注:面试题, Java中是否有全局变量?答:无,java万事万物皆对象(在程序员口语中的全局变量一般指 public static)
final关键字
一,final关键字可以用来修饰类。、方法、变量。各有不同、
A,修饰类(class)
1,该类不能被继承。
B,修饰方法(method)
1,盖方法可以被继承,但是不能被覆盖,
C,修饰变量(variable)
1.用final修饰后变为常量 ( 常量的定义格式必须是全部大写),包括静态变量、实例变量、局部变量。
D,修饰参数
1,可以读取改参数,但是不能对其做出修改,
二,final关键字不能用来抽象类和接口。
#abstract修饰符
1,abstract 修饰类,会使这个类称为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型(下图),也就是编译时类型,抽象类就相当于一类的半成品,需要子类继承并覆盖其中的方法。
2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明没有实现,需要子类继承实现
注意:
a,有抽象方法的类一定是抽象类,但是抽象类中不一定都是抽象方法,也可以全是具体方法,abstract修饰符在修饰类时必须放在类名前,abstract 修饰方法就是要求其子类(实现)这个方法,调用时就可以以多态方式电泳子类覆盖(实现)后的方法,除非子类本身也是抽象类。
b。父类是抽象类,其中有抽象方法,name子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类、
接口
接口类拟于抽象类,但是在接口里,都是抽象方法,声明的属性都是常量。可以隐藏前头的,
在抽象类里,可以包含一个或多个抽象法发,但在接口中,所有的方法必须是抽象的,不能有方法体,他比抽象类更加抽象,
接口使用interface声明,可以指定一个类必须做什么,而不是规定他如何去做。
补:
1,抽象方法,只管声明,不管实现, (public abstract void add()),子类继承抽象类,重写方法,让子类创建对象,
2,接口里只有两种:常量,抽象方法(接口也属于抽象的一种,在常量池里)
3,抽象类(像父类,毫无意义,但是可以通过多个子类创建对象来实现), 意义:保持多态的特性。
4,抽象(可重写) final(不可重写)
5,抽象类和接口功能重复,区别在于,前者灵活运用,后者只适合定义内容
总结:
普通类
int a;
public void abc(){.........}
final int a;
抽象类
int a;
public void abc(){...........}
public abstract void xyz()
final int a;
接口
int a;
public abstract void xyz()
public void xyz()
java中存在多继承,单继承存在类中。final 可以让某些抽象类不可以重写
接口没有构造方法,
抽象有构造方法