Java中,包的概念、常量、静态成员、继承

新建包:左上角—新建—包

命名规则(通常从大到小,方便整合不容易冲突)  例如:com.itnba.maya.test

package必须在最顶行,之前不能再有其他代码

使用包:  

     快捷方式:使用包中的某个变量名alt+/   

import 包名.类名;       //只引用包中某一个
import 包名.*;     //引用包中所有的

例   import com.itnba.maya.*;

常量:final    (Java中没有真正的常量。只有final型的变量,可以当常量来用。   一次定义,多次使用,不可被更改)  

public final String SSSS=" hello world";     //常量名全部用大写

常量的赋值只能在构造函数或者定义时赋值,并且只能赋值一次

静态成员  static     与静态相对应的是“实例”

private static String zhuRen;

//private static 类型 变量;

  

静态成员包括:静态变量和静态方法(函数) 

静态变量和方法是属于所有对象共享的(属于类的)  静态方法可以用类名调用  优点:省空间

例:   假设我们设置一个类中有如下代码

package com.itnba.maya.ceshi;

public class Cat {

		private String mingZi="小欢";            //成员变量
		private static String zhuRen="王五";   //静态成员变量
		private String daXiao="很小";            //成员变量
		
		public static String getZhuRen() {      //get获取
			return zhuRen;
		}
		public static void setZhuRen(String zhuRen) {      //set更改
			Cat.zhuRen = zhuRen;
		}	
}

然后我们调用

package com.itnba.maya.ceshi;

public class Jiao {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Cat mao =new Cat();
		Cat mao1=new Cat();
		Cat mao2=new Cat();

	    System.out.println(mao.getZhuRen());   //默认的值
	    
		mao1.setZhuRen("张三");
		System.out.println(mao1.getZhuRen());   //赋值“张三”之后
		
		mao2.setZhuRen("李四");           
	System.out.println(mao2.getZhuRen());           //赋值“李四”之后
	System.out.println(mao.getZhuRen());            // 最后我们再次输出一下默认的值
	}
}

 输出结果如下

为什么会出现最后输出默认值时会变成李四? 默认值随着每次更改,跟着更改     静态成员和静态方法的属性:静态变量与静态方法是属于所有对象共享的

静态变量存储数据的时候一定要注意防止共享冲突。

静态方法中只能操作当前类的静态变量和静态方法,不能操作实例变量和实例方法,实例方法中可以调用静态方法

继承   

关键字 extends

 可以把父类中的相关内容直接继承到子类,子类就不需要再重新定义。

private 私有的    无法被继承      
public  公共的,protected   同一个包及其它包中的派生类 永远被继承。
不写时默认,只有在当前包中可以被继承。

假设父类中有如下代码

public class DongWu{             //类

 protected String Name;                   //成员变量

public DongWu(String a){                            //构造函数(有参数)
  
   this.Name=a;                      //传回的参数等于Name

  }

 public void Zou(){                   //成员函数

 System.out.println( this.Name+"在地上跑" );     

  }

}

在其子类中有如下代码  

public class Dog extends DongWu {        //继承自DongWu

	public Dog(String a) {                   //构造函数(有参数)
		super("小狗");                         
		
	}

}

 然后在main函数中,我们来测试, 在子类中返回的值是否在父类中可以输出 

public class DongWu {
	 protected String Name;     
	 
	 public DongWu(String a){                          
	    this.Name=a;                     
	   }

	  public void Zou(){                   

	  System.out.println( this.Name+"在地上跑" );     
	  }
}

  效果图如下

 继承的实例化次序

父类的成员定义--父类的构造函数--子类的成员定义-- 子类的构造函数

  

 带有构造函数的继承

如果父类中构造函数有参数,在子类构造函数的第一行,必须用super()给父类构造传递参数,调用父类构造。( 例如如上面的代码)

  

 

原文地址:https://www.cnblogs.com/zhaotiancheng/p/6224158.html