abstract
abstract:抽象的
可修饰类和方法
抽象类:
特点:1.不可被实例化 2.可以定义抽象方法和普通方法
作用:1 当作父类使用 2.作为父类引用,更自然使用堕胎
抽象方法:
特点:
1.抽象方法不能有方法体
2.抽象方法必须出现在抽象类中
3.抽象方法必须被子类重写 除非子类也是一个抽象类
作用:
1.父类不想实现
2。限制子类必须要重写
定义一个抽象类Calculate,其中有两个抽象方法max()、min()求三个数的最大最小值.
在Operation类中实现该抽象类,
同时实现抽象 方法max、min
public abstract int max(int a,int b,int c);
public abstract int min(int a,int b,int c);
Calculate:
public abstract class Calculate {
public abstract int max(int a,int b,int c);
public abstract int min(int a,int b,int c);
}
Operation:
public class Operation extends Calculate {
@Override
public int max(int a, int b, int c) {
return a>b?a>c?a:c:b>c?b:c;
}
@Override
public int min(int a, int b, int c) {
return a<b?a<c?a:c:b<c?b:c;
}
}
测试:
public class Main {
public static void main(String[] args) {
Operation o=new Operation();
System.out.println(o.max(1,2,3));
System.out.println(o.min(1,2,3));
}
}
结果
static
static方法和变量存在于方法区 不同于正常的方法和变量 且static是在类加载时初始化的 是类共享的
static:静态的
可以修饰变量、方法、代码块、内部类
静态成员变量
使用:可以通过类名、属性名进行访问和使用(当类加载时就加载出来了)
特点:
1.静态变量在对象间是共享的
静态成员方法
使用:可以通过类名,方法名进行访问(当类加载时就加载出来了)
特点:
1.静态方法中只能访问静态成员(属性和方法)
2.非静态方法中可以访问静态成员(属性和方法)
3.静态方法中不能使用this和super关键字
4.静态方法可以被继承但是不能被重写
5.静态方法不能使用abstract关键字修饰
1、创建一个售票员类,创建四个售票员对象,售卖100张票
public class sta_q1 {
public static int num=100;
public void sell(){
num--;
System.out.println("卖一张,还有"+num+"张票");
}
}
public class Main {
public static void main(String[] args) {
sta_q1 s1=new sta_q1();
sta_q1 s2=new sta_q1();
sta_q1 s3=new sta_q1();
sta_q1 s4=new sta_q1();
s1.sell();
s2.sell();
s3.sell();
s4.sell();
}
}
结果:
final
final:最终的
可以修饰 类 方法 变量
修饰的类:最终类
特点: finnal不能被子类继承
修饰的方法:最终方法
特点:final方法不能被子类重写,但是可以被继承
修饰的属性:变量
特点: 1.常量必须要赋值:
最后赋值时机:
非静态常量
a.直接赋值
b.在代码块中赋值
c.在构造方法中赋值(所有的构造方法)
静态变量
a.直接赋值
b.在静态代码块中赋值
2.常量不能被修改
简单类型常量
值不能修改
引用类型常量
地址不能修改