zoukankan      html  css  js  c++  java
  • Java探索之旅(7)——对象的思考

    1.知识要点  

        ❶不可变类:一旦创建,其内容不能改变的类称之为不可变类。满足:所有数据域私有,没有修改器,没有访问器方法,其返回一个指向可变数据域的引用。(这样通过引用就能修改私有数据域)。比如,返回数组,String等皆可能导致实际数据被改变

        ❷变量作用域:类的变量和方法可以任意顺序出现,只要方法没有使用某个变量。方法可以定义与类数据变量名称(实例变量和静态变量)相同的局部变量,且使用具有较高的优先级。

        ❸this引用:指向本身的引用。可以在无参和少参构造函数中使用this调用多参构造函数,便于维护,使用方法this(参数表)。此时this指向类名。Java要求这种使用在任何其他语句之前出现。

        ❹一个对象可以包括另外一个对象,关系称之为组合。即类的数据域可以定义另外一个类的引用变量。


    2.类的设计原则

        

        ❶内聚性:描叙单一实体。所有操作应该在逻辑上配合,支持连贯的目标。

        ❷一致性:命名遵循规则

        ❸封装性:private隐藏数据域。get和set提供访问器和修改器。

        ❹清晰性:在不产生混淆的情况下,凭直觉来定义。

        ❺完整性:供不同的用户使用的齐备功能

        ❻实例和静态:不依赖于单独对象的变量和方法应该声明静态。实用类名引用静态变量和方法。提供公有的静态修改器,修改静态数据域。实例可以调用静态(实例和方法),但静态不能调用实例(变量和方法)


    3.实例-栈

    public class StudyObject 
    {
    	static int size=10;
    	public static void main(String args[])
    	{
    		Stack mystack = new Stack();
    		java.util.Random random=new java.util.Random();//随机数
    		random.setSeed(100);
    		for(int i=0;i<size;i++)
    			mystack.push(random.nextInt(56));
    		mystack.getElements();
    		System.out.println();
    		mystack.pop();
    		mystack.getElements();
    	}
    
    }
    
    class Stack
    {
    	private int[] elements;
    	private int size=0;
    	public static final int DEFAULT_CAPSITY=4;
    	
    	Stack(){this(DEFAULT_CAPSITY);}//this构造函数 此处和Stack指向相同的引用
    	Stack(int capcity)
    	{elements=new int[capcity];}
    	
    	public void push(int e){
    		if(size>=elements.length)
    		{
    			int[] temp=new int[size+1];
    			System.arraycopy(elements, 0, temp, 0, size);//扩展数组,字符串复制
    		    elements=temp;
    		}
    		elements[size++]=e;	
    	}
    	
    	public int pop()
    	{
    		int last=elements[--size];
    		int[] temp=new int[size];
    		System.arraycopy(elements, 0, temp, 0, size);//删除最后一个元素
    		elements=temp;
    		return last;
    	  }
    	 
    	public int peek()
    	{return elements[size-1];}
    	
    	public boolean isEmpty()
    	{return size==0;}
    	
    	public int getSize()
    	{return size;}
    	
    	public void getElements()
    	{
    		for(int i=0;i<size;i++)
    			System.out.print(elements[i]+" ");	
    	} 
    }


  • 相关阅读:
    xml读写
    scrollWidth,clientWidth与offsetWidth的区别
    DIV+CSS设计时浏览器兼容性
    访问IIS客户端出现server application error解决方案
    网站局域网内不能访问解决方法之一
    xml学习笔记(一)
    文本编辑器FCKeditor
    业务部门需要IT人员为其提供什么
    程序员与VBA之怪现状
    你的代码完成了吗?(之一)——可用性和易用性
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393094.html
Copyright © 2011-2022 走看看