讲解作业
空参的快捷键 :
//空参 Alt+Shift+s -----Generate Constructor using Fields public Employee(){ } public Employee(String ename,int eid,int salary){ this.ename=ename; this.eid=eid; this.salary=salary; }
Final 关键字
特点 写在 public 后 class前
修饰类:不可以被继承 ,但可继承其他类(太监类)
修饰方法:不可以被子类重写,但可以继承使用
修饰局部变量: 一次赋值,终身不变 相当于常量
final int a = 20; a = 30; //赋值报错,final修饰的变量只能赋值一次
修饰引用类型的变量值为对象地址值,地址值不能改,对象属性可以改。
final Person p = new Person(); Person p2 = new Person(); p = p2; //final修饰的变量p,所记录的地址值不能改变 p.name = "张三";//可以更改p对象中name属性值
//p 是无法更改,只能改属性值
修饰成员变量:当final修饰成员变量时 ,必须定义就赋值。终身不变或者用构造方法
pm
Static 关键字
静态修饰符,一般修饰类中成员变量和方法
特点:
不可以被继承,但可以继承其他类
class Yy {} final class Fu extends Yy{} //可以继承Yy类 class Zi extends Fu{} //不能继承Fu类(不可以当父亲)
修饰成员变量:
被static修饰的成员变量属于类,不属于这个类的某个对象(static在类中修改了变量值,其他对象中的static成员变量值跟着改变,多个对象共享同一个static成员变量)
private String name; private int age; //用static修饰这个变量 public static String schoolname="山东大学"; ----------------------------------------- public static void main(String[] args) { //18后面可以不用写"山东大学" 因为static在类中已经修饰过 Students s1=new Students("张三",18,"山东大学");//被static在类中赋值后,在调用,就不需要在写属性值, Students s2=new Students("李四",18); Students s3=new Students("王五",18); Students s4=new Students("赵六",18);
//类名.变量名
Students.schoolname="北京大学";
System.out.println(Students.schoolname);
//类名。方法名()
Students.show();
}
在静态前:
静态后:
修饰成员方法:
类名.静态成员变量名
类名.静态成员方法名(参数)
对象名.静态成员变量名 ------不建议使用该方式,会出现警告
对象名.静态成员方法名(参数) ------不建议使用该方式,会出现警告
class Student { //静态成员变量 public static int num = 100; //静态方法 public static void show(){ System.out.println("静态方法"); } } class Demo { public static void main(String[] args) { System.out.println(Demo.num); Demo.show(); } }
被static修饰后的方法,就属于这个类而不属于它的对象
总结:修饰成员变量和成员方法时:静态不能访问非静态,但非静可以访问静态(先进的不知道后进的 但后进的知道先进的)
注意:
静态只能访问静态,静态不能使用 this(本类对象)跟super(父类对象)
main方法里必须有static 原因:main方法是程序入口,不属于任何一对象,由虚拟机调用,它是特殊方法,可定义在任意类中
同一个类中,静态成员只能访问静态成员
class Demo { //成员变量 public int num = 100; //静态成员变量 public static int a = 200; //静态方法 public static void show(){ //System.out.println(num); 静态方法中,只能访问静态成员变量或静态成员方法 System.out.println(a); } }
多态调用方法
编译看=左边,父类有,编译成功,父类没有,编译失败
运行,静态方法,运行父类中的静态方法,
运行,非静态方法,运行子类的重写方法
成员变量,编译运行全是父类
定义静态常量
static final 只能在定义时赋值。没有第二种赋值方法
格式:
public static final 数据类型 变量名 = 值;
所有接口中的成员变量已是静态常量,因接口没有构造方法,必须显示赋值。可以直接用接口名访问
interface Show { public static final int COUNT = 100; Show.COUNT //直接用接口名访问变量 }
匿名对象
创建对象时,只有创建语句,没有对象地址赋值给某个变量
匿名对象,只能调用一次