关键字


 以下是我们在写Java程序时需要注意的一些关键字,我们平时使用时需要多加注意。

1.访问限定符

   对变量、方法、类的区域进行限制的关键词。

   以下4种访问限定符按范围是:从大到小 

 

    1).public

       区域:在同一个程序中可以在任意地方访问

 

    2).protected

       区域:在同一个包中和同一个类,以及不同包中的子类中可以访问

 

    3).默认不写

       区域:能在同一个包中和同一个类中被访问

 

    4).private

       区域:只能在同一类中被访问

 

/**
 * 人类类
 * @author liuqingjian
 *
 */
public class person {
	public String name;
	protected String num;
	String add;
	private int age;
}
public class younger {

	public static void main(String[] args) {
		person a=new person();
		a.name="张三";
		a.num="123456";
		a.add="长沙";
		//a.age=15;//错误,The field person.age is not visible这个属性不可见。就是超出作用范围

	}
}

 

2.变量

   1.类变量

       类是由拥有共同点的所有对象组成的的集合。类变量就是所有对象的共同属性。

       范围:能在同一个类中使用。

 

    2.成员变量

       在类中定义的变量。就是描述类的外貌特征、身份信息等等。

       范围:能在同一个类中使用。

 

    3.参数变量

      只存在于成员方法变量,利于对象之间的信息交互。

      范围:只能在同一个成员方法中使用。

 

    4.局部变量

      只存在于某一块的变量,只有在这一块才可以使用,出了这一块不能使用。

      范围:在程序中的直观方式,在一对大括号之间定义,就只能在一对大括号之间使用。

 

   注意:在同一个类中,类变量和属性变量不能同名

          同一个方法中的参数变量和局部变量不能同名

          同一个类中的参数变量/局部变量是可以和类变量/属性变量同名的

 

3.this:用在构造方法和方法中

   1).this.属性名:用来表示当前对象的属性

         this.方法名:用来表示对当前对象的方法的调用 

   2).this(参数列表):用来调用当前对象的构造方法

         用法:用在构造方法的第一行,表示当前类的某一个构造方法

         具体的哪一个构造方法取决于this后面的参数列表

/**
 * 人类类
 * @author liuqingjian
 *
 */
public class person {
	public String name;
	private String add;
	private int age;
	
	public person(){
		//this(参数列表)
		this("张三","长沙");
		//this.方法名
		this.set();
	}
	public person(String name,String add){
		//this.属性名
		this.name=name;
		this.add=add;
	}
	public void set(){
		System.out.println(this.name+"住在"+this.add);
	}
}

/**
 * 主类
 * @author liuqingjian
 *
 */
public class Demo {

	public static void main(String[] args) {
		person a = new person();
		person b = new person("李四","张家界");
	}
}

  

4.super:用在子类的构造方法中

   1).super.属性名;或者 super.方法名();

        在子类中,用来表示当前类的父类对象,用来在子类中调用父类的方法

   2).不写,默认为super();

   3).super(参数列表);

        用法:在子类的构造方法中调用父类的某一个构造方法

       具体是哪一个由super后面的参数列表确定

 

/**
 * 人类类
 * @author liuqingjian
 *
 */
public class person {
	public String name;
	protected String add;
	private int age;
	
	public person(){
		//this(参数列表)
		this("张三","长沙");
		//this.方法名
		this.set();
	}
	public person(String name,String add){
		//this.属性名
		this.name=name;
		this.add=add;
	}
	public void set(){
		System.out.println(this.name+"住在"+this.add);
	}
}

/**
 * 年轻人类
 * @author Administrator
 *
 */
public class younger extends person {
	public younger(){
		//super(参数列表)
		super();
	}
	
	public void set(){
		//super.方法名()
		super.set();
		//super.属性名
		System.out.println(super.name+"现在正在"+super.add);
	}
}

/**
 * 主类
 * @author liuqingjian
 *
 */
public class Demo {

	public static void main(String[] args) {
		younger a = new younger();
	}
}

 

5.final:最终的,不可更改的

          可以用来修饰类、方法、变量

 

  用法:

         1、final修饰类          表示这个类不能被继承

         格式:public final class 类名{}

/**
 * 人类类
 * @author liuqingjian
 *
 */
public final class person {
	public String name;
	protected String add;
	private int age;
	
	public person(){
		//this(参数列表)
		this("张三","长沙");
		//this.方法名
		this.set();
	}
	public person(String name,String add){
		//this.属性名
		this.name=name;
		this.add=add;
	}
	public void set(){
		System.out.println(this.name+"住在"+this.add);
	}
}

 

 

错误: The type younger cannot subclass the final class person<!--StartFragment -->

           younger 类不能继承final class person类

 

         2、final修饰方法          表示这个方法不能被重写[覆盖]

         格式:访问限定符 final 返回值类型方法名(参数列表){}

 

/**
*父类中
*/
public final void set(){
		System.out.println(this.name+"住在"+this.add);
	}
/**
*子类中
*/
public void set(){
   
      //super.方法名()

        super.set();       

      //super.属性名
        System.out.println(super.name+"现在正在"+super.add);
}

 错误:Cannot override the final method from person

           来自person的方法不能被重写

 

         3、final修饰变量          表示这个变量不能被修改,仅且必须且只能赋值一次

         格式:

                1.修饰类、属性、局部变量:访问限定符    final     变量类型    变量名;

                2.修饰参数变量:final   变量类型    变量名;

public final String name;

public person(final String name,String add){
		//this.属性名
		this.name=name;
		this.add=add;
	}

 

 

6.static:静态的

            可以用来修饰类 属性 方法

           1static属性类属性:当前类所有的对象共用的同一个属性变量

                类属性格式:访问限定符   static    变量类型   变量名;

               可以通过对象或者类名调用

           2static 方法是类方法:当前类所有的对象共用的同一个方法

                类方法格式:访问限定符  static   返回值类型   方法名(参数列表){}

                注意:类方法中不能使用thissuper

public static void set(){
		//super.方法名()
		super.set();
		//super.属性名
		System.out.println(super.name+"现在正在"+super.add);
	}

 

 

                          类方法是调用父类还是子类重写的,只和类名有关

                         成员方法:成员方法是调用父类还是子类重写的,只和对象本身有关 

  

/**
 * 人类类
 * @author liuqingjian
 *
 */
public class person {
	public final String name;
	protected String add;
	private int age;
	
	public person(){
		//this(参数列表)
		this("张三","长沙");
		//this.方法名
		this.set();
	}
	public person(final String name,String add){
		//this.属性名
		this.name=name;
		this.add=add;
	}
	public void set(){
		System.out.println(this.name+"住在"+this.add);
	}
}

/**
 * 年轻人类
 * @author Administrator
 *
 */
public class younger extends person {
	public younger(){
		//super(参数列表)
		super();
	}
	
	public void set(){
		//super.方法名()
		super.set();
		//super.属性名
		System.out.println(super.name+"现在正在"+super.add);
	}
}

/**
 * 主类
 * @author liuqingjian
 *
 */
public class Demo {
	public static void main(String[] args) {
		younger MN = new younger();

		person bb = new younger();
		bb.set();
	}
}

 输出:



 

                         static方法中不能直接调用非静态的属性和方法

                         static的属性和方法是不需要对象调用的

                        类名.方法名();

          3static代码块[]

               执行顺序:

               1、静态代码块/静态变量【两者按照前后顺序】

                    静态代码块、静态变量作用:初始化数据

               2、主函数

               3、创建对象时,非静态代码块/非静态变量【两者按照前后顺序】

                   非静态代码块、非静态变量作用:初始化对象的数据

 

/**
 * 主类
 * 
 * @author liuqingjian
 *
 */
public class Demo {
	//非静态变量
	public A a = new A();
	//静态变量
	public static B b = new B();
	//
	{

	}
	//静态代码块
	static{
		System.out.println("DDDDD");
	}
	//非静态代码块
	public static void set(int n) {
		System.out.println("n=" + n);
	}

	public static void main(String[] args) {
		Demo MN = new Demo();
		MN.set(65);
	}
}

 

结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值