zoukankan      html  css  js  c++  java
  • 封装、构造方法、构造代码块、方法重载

     一、封装的概念

    在现实生活中,每个对象的属性或者方法,有些是可以向外展示的,有些是不可以向外展示的,比如,人的外貌、姓名、国籍等都可以向外展示,但是自己家里的事情就不可以告诉别人,再以笔记本为例,笔记本内部有cpu、主板、内存条、硬盘、网卡显卡声卡等并没有向外展示,而是封装在外壳内部,只提供给我们使用的接口功能,这就保证了电脑的安全性,因为我们使用者不一定都熟悉电脑,有时候一些误操作可能导致电脑损坏。程序也是如此,类中的某些属性和方法只提供给你使用,但是你不能随意更改,这样就保证了代码的健壮性。但是我们要提供给调用者一些访问的方法,然后设置访问的条件。

     

    public class Computer {
    	
    	private String hardDisk;//硬盘
    	private String mainboard;//主板
    	
    	public void use(){
    		System.out.println("useing");
    	}
    	
    	public String getHardDisk() {
    		return hardDisk;
    	}
    	public void setHardDisk(String hardDisk) {
    		this.hardDisk = hardDisk;
    	}
    	public String getMainboard() {
    		return mainboard;
    	}
    	public void setMainboard(String mainboard) {
    		this.mainboard = mainboard;
    	}
    	
    	
    }
    

      

    关键字:private是一个关键字,它用来私有化成员变量,这样成员变量就只用在本类中能够访问到,其他类访问不到,只有通过调用提供的方法来访问,那么我们为了控制访问条件,就可以在提供的方法中设置一些条件进行限制。

    注意:private私有化变量只是封装的一种。 

    二、构造方法

    1.上面提到了构造方法(函数),格式:方法名和类名相同,用了对对象进行初始化,因为类创建的对象存在共性,那么我们就可以在生成对象的同时给它的成员变量进行赋值初始化;

    Person p=new Person("小明",19);
    //这样new+构造函数创建了一个对象,并且给对象中成员变量赋值

    注意:构造方法没有返回值

    2.方法的重载:定义:当一个类中定义了多个方法,方法名相同,但是参数不同,参数个数不同或者类型不同,那么类产生的对象在调用方法时,会根据参数匹配情况自动选择,这就是重载;

    3.如果类中没有构造方法,会默认添加一个空参数构造方法  

      方法名(){

      }

    方法的重载举例如下:

    class Person
    {
     Person()
     {
     }
     Person(String name)
     {
      this.name=name;
     }
     Person(String name,int age)
     {
      this.name=name;
      this.age=age;
     }
    }

    注意:

    1、如果创建的对象中,既有无参数的,也有有参数的,那么,在类中要把空参数构造方法写上,因为如果自己写了一个有参数构造方法,那么系统就不会在默认提供一个无参的构造方法了。

    2、一些java规范:类名的首字母必须大写,方法和属性首字母小写,有多个单词组成的类名和方法需要使用驼峰结构,第二个单词首字母大写;

    三、构造代码块与构造函数之间的调用

    1.构造代码块:当对象一建立,构造代码块就运行了,它是用来给对象进行初始化的,它优先于对象执行。

    格式:{   System.out.println("");

    }

    它与构造函数的区别是:它是用来给所有对象进行初始化的,所以里面的执行体,是所用对象共性的东西;而构造函数是给特定的对象进行初始化,它还要看参数,考虑到重载问题等等。

    3.构造函数之间的调用通过this语句来完成:代码体现如下:

    class Person
    {
     Person()
     {
     }
     Person(String name)
     {
      this();//1
      this.name=name;//3
     }
     Person(String name,int age)
     {
      this(name);//2
      this.age=age;//4
     }
    }

    如果Person p=new Person("小明",19);,那么首先根据方法的重载,它会找到最后一个构造方法,然后执行2;到上一个构造方法中,然后有执行1;然后执行3,再执行4;

    注意:构造方法之间调用时,this语句要出现在第一行,构造方法先执行,如果构造方法里还有构造方法,那么就执行更细节的构造方法。


     

  • 相关阅读:
    python基础之函数(基础七)
    python基础之文件操作(基础六)
    python基础之数据类型补充(基础五)
    python之深浅拷贝(基础四)
    python基础数据类型之字典(基础三)
    python基础数据类型之列表,元组(基础二)
    python基础入门二
    随笔
    oss 上传照片失败
    mysql 同表查询更新
  • 原文地址:https://www.cnblogs.com/warrior4236/p/6055742.html
Copyright © 2011-2022 走看看