常用关键字之总结
1.访问权限,可见性分类
权限从大到小为:public(全部可见)—>protected(包内可见,不同包的话,子类可见)—>default(仅包内可见)—>private(仅本类中可见)
2.static关键字
用static修饰的方法和属性时说明该方法或属性是公共使用的,可以直接由类来调用
还有,只要改变一处用static修饰的属性值时在任何有该属性的值都会改变,从而会造成多态的失效
3.final关键字
用此关键字修饰方法时,不能被其子类覆写
用此关键字修饰的属性或方法或类的时候不能将其改变
4.super与this关键字
this是访问类中的属性或方法,如果本类中没有此属性或方法,则从父类中继续查找
super只是访问父类中的方法或属性
5.class,interface,package,abstract关键字
class是定义一般类的时候用到的关键字
interface是定义接口的时候用到的关键字
abstract是定义抽象类的时候用到的关键字
package是定义一个包的时候用到的关键字
程序测试:
@@@类
package 关键字;
/**
* 学生类
* @author Administrator
*
*/
public class Student {
//姓名属性
public static String name="蓝杰";
//年龄属性
protected int age;
//性别属性
String sex;
//学号属性
private int num;
//成绩属性
public static float grade;
//学校属性
public final String school="湖南高校";
//设置和取得属性的方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public final void study(){
System.out.println("------->>>>学习中");
}
//构造方法
public Student(){
System.out.println("Student被实例化了");
}
}
@@@类
package 关键字;
/**
* 大学生类继承学生类
* @author Administrator
*
*/
public class UNStudent extends Student {
UNStudent student = new UNStudent();
public void init(){
student.name="abc";
student.age=18;
student.sex="男";
//student.school="中南大学";用final修饰的属性
//student.num=001;用private修饰的属性不能被其他类调用
}
//在父类中用final修饰的方法不能被子类重写
// public void study(){
// System.out.println("------->>>>大学生在学习中");
// }
//构造方法
public UNStudent(){
System.out.println("UNStudent被实例化了");
}
}
@@@类
package 关键字.another;
import 关键字.Student;
/**
* 小学生类继承学生类
* @author Administrator
*
*/
public class PRStudent extends Student {
PRStudent student = new PRStudent();
public void eat(){
//用public修饰的属性可以被任意对象调用
student.name="abc";
//用protected修饰的属性能被不同包的子类对象调用
student.age=18;
//student.sex="男"; 用default默认的访问权限不能被其他包的类调用,就算是继承了的子类也不能调用
//student.num=001;用private修饰的属性不能被其他类调用
}
}
@@@类
package 关键字;
/**
* 测试类
* @author Administrator
*
*/
public class Test {
public static void main(String args[]){
//用static修饰的属性可以直接被类调用,而不一定要有一个具体的对象了
System.out.println(Student.name);
//用static修饰的属性的值一处改变就会在任何地方都会变
Student student=new Student();
student.grade=60;
Student student1=new Student();
student1.grade=90;
System.out.println("student.grade="+student.grade);
//输出的结果是:
//蓝杰
//student.grade=90.0
}
final UNStudent student2=new UNStudent();
public void play(){
// student2=new UNStudent();用final修饰的对象不可再指向其他对象
}
}
结果为:
蓝杰
Student被实例化了
Student被实例化了
student.grade=90.0