zoukankan      html  css  js  c++  java
  • java面向对象(二)构造函数和构造代码块

    面向对象


    类成员

    1.成员变量

    • 属性
    • 数值类型的基本数据类型默认值是 0
    • 成员变量在任何方法中都能访问,和声明先后没有关系

    2.成员函数

    方法

    3.定义方式

    class 类名{成员变量;成员函数} //首字符大写,$_开头

    局部变量

    • 定义在方法或者语句中,
    • 没有默认的初始化值,必须手动初始化

    数组和函数在堆中

    方法在栈中

    class ClassDemo1{
    	public static void main(String[] args){
    	//创建对象,p指向Person的内存地址
    	Person p = new Person();
    	p.run();
    	}
    }
    /**
    *定义类
    */
    class Person{
    	//成员变量===属性(property)===字段(field)
    	int height;//身高
    	int weight;
    	int age;
    	public void run(){
    		System.out.println("run...");
    	}
    }
    

    匿名对象

    1.new Person().run();
    2.作为参数进行传递

    class ClassDemo1{
    	public static void main(String[] args){
    	//匿名对象
    	new Person().run();
    	
    	}
    }
    /**
    *定义类
    */
    class Person{
    	//成员变量===属性(property)===字段(field)
    	int height;//身高
    	int weight;
    	int age;
    	public void run(){
    		System.out.println("run...");
    	}
    }
    
    • 匿名对象是对象的简化形式

    • 匿名对象两种使用情况
      -- 当对对象方法仅进行一次调用的时候
      -- 匿名对象可以作为实际参数记性传递

    构造函数

    特点:

    1. 函数名名相同
    2. 不用定义返回值类型
    3. 没有具体的返回值

    作用:给对象进行初始化

    注意:

    1. 默认构造函数的特点

    2. 多个构造函数是以重载的形式存在的

    对构造函数的几点解释:
    1.函数名和类型相同
    2.没有返回值
    3.如果类没有定义构造函数,jvm分配一个空构造;如果类定义了构造函数,就没有空构造。
    4.可以重载
    5.创建对象时使用,如:new Car();

    class ClassDemo1{
    	public static void main(String[] args){
    		
    		Dog d2 = new Dog("white");
    		System.out.println(d2.getColor());
    	}	
    }
    
    class Dog{
    	//成员属性
    	private String color;
    	private int age;
    	
    	//构造函数
    	//空构造
    	public Dog(){
    		
    	}
    	//只有一个参数的构造函数
    	public Dog(String c){
    		color = c;
    	}
    	
    	public void setColor(String c){
    		color = c;
    	}
    	public String getColor(){
    		return color;
    	}
    }
    

    注意程序中构造函数传参的方式。

    另外,构造函数可以有多个,只要参数不同就可以。下面给出三种不同的构造方式。

    class ClassDemo1{
    	public static void main(String[] args){
    		//第一种构造函数创建对象的方式
    		Dog d1 = new Dog();
    		d1.setColor("black");
    		d1.setAge(1);
    		System.out.println(d1.getColor() + d1.getAge());
    		
    		//第二种构造函数创建对象的方式
    		Dog d2 = new Dog("white");
    		System.out.println(d2.getColor());
    		
    		//第三种构造函数创建对象的方式
    		Dog d3 = new Dog("yellow",2);
    		System.out.println(d3.getColor() + d3.getAge());
    	}	
    }
    
    class Dog{
    	//成员属性
    	private String color;
    	private int age;
    	
    	//构造函数
    	//空构造
    	public Dog(){
    		
    	}
    	//只有一个参数的构造函数
    	public Dog(String c){
    		color = c;
    	}
    	
    	//有两个参数的构造函数
    	public Dog(String c,int a){
    		color = c;
    		age = a;
    	}
    	public void setAge(int a){
    		age = a;
    	}
    	
    	public int getAge(){
    		return age;
    	}
    	
    	public void setColor(String c){
    		color = c;
    	}
    	public String getColor(){
    		return color;
    	}
    }
    
    

    构造代码块

    1.创建对象的时候调用
    2. 在构造函数之前

    对象的创建过程:

    • 1.先运行构造代码块
      (从上到下,按序执行)
    • 2.运行构造函数
    • 3.成员变量
      --- 执行顺序:
      a.color = null;如果没有赋值
      b.color = "black";如果在类中赋了初值
      c.构造代码块
      d.构造函数

    静态代码块 static{}

    类加载期间执行,而且只执行一次,也是从上到下按序执行。

    由此,我们可以总结一下这些 类成员

    • 成员变量
    • 成员函数
    • 构造函数
    • 构造代码块 { }
    • 静态代码块 static{}:在类加载期间执行,而且只执行一次。也是从上到下按序执行。
      -- 静态成员之间可以互相访问,按序执行。
      -- 静态成员不可以访问非静态成员,
      -- 可以访问静态成员,
      -- 静态成员通过类访问(和对象无关。比如:Dog.blood)
  • 相关阅读:
    将vcf文件转化为plink格式并且保持phasing状态
    bcftools合并vcf文件
    NCBI通过氨基酸位置查看相邻SNP
    bcftools或vcftools提取指定区段或者多个指定位置的vcf文件(extract specified position )
    vcf文件去除非变异的基因型(use GATK exclude nonvariant in vcf format,0|0,0/0)
    使用bcftools提取指定样本的vcf文件(extract specified samples in vcf format)
    课程三(Structuring Machine Learning Projects),第一周(ML strategy(1)) —— 1.Machine learning Flight simulator:Bird recognition in the city of Peacetopia (case study)
    python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码
    numpy中int类型与python中的int
    课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第三周(Hyperparameter tuning, Batch Normalization and Programming Frameworks) —— 2.Programming assignments
  • 原文地址:https://www.cnblogs.com/zhqin/p/10008050.html
Copyright © 2011-2022 走看看