• 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()给父类构造传递参数,调用父类构造。( 例如如上面的代码)

      

     

  • 相关阅读:
    display:inline、block、inline-block的区别
    JQ里的this与$(this)
    CSS3常用功能的写法
    左右菜单
    php smarty
    网页制作重点记录
    scrapy保存csv文件有空行的解决方案
    scrapy实现多级页面的抓取时使用meta传递item数据的问题(转)
    scrapy抓取拉勾网职位信息(八)——使用scrapyd对爬虫进行部署
    scrapy抓取拉勾网职位信息(七)——实现分布式
  • 原文地址:https://www.cnblogs.com/zhaotiancheng/p/6224158.html
Copyright © 2020-2023  润新知