java_basic_构造方法

【构造方法】:https://baike.baidu.com/item/构造方法/10455265

构造方法是一种特殊的方法,它是一个与类同名且返回值类型为同名类类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

 

构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:

1.构造方法作用:(1).构造出来一个类的实例 (2).对构造出来个一个类的实例(对象)初始化。

2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。

3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。

4.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。

5.不能被static、final、synchronized、abstract和native修饰。

6.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。

7.构造方法分为两种:无参构造方法 有参构造方法

构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。

8.构造代码块:
  (1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
  (2)构造代码块和构造函数的区别:
  构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化

9.子类继承父类中,
  ***子类的实例化过程
  ***构造方法不能被子类继承
  ***子类创建对象时,会先去创建父类的对象。
  默认是去调用父类的无参构造方法。
  ***子类构造方法中,第一行默认是super()
  ***为什么子类中第一行会默认有super()
  因为他继承父类的成员使用,使用前这些成员必须初始化,
  而他们是父类的成员,所以,必须通过父类进行初始化。
  所以,会先创建一个父类的对象。
  **当父类没有无参构造方法时

必须使用this或者super调用其他的构造方法。

10.自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。如果写了一个有参的构造方法,就一定要写无参构造方法。
  如果想使用无参的构造方法,就必须手动给出无参构造方法。
  建议:一般情况下,我们自定义的类都要手动给出无参构造方法。

 

 

 

【代码】-- 理解java构造方法:

构造方法作用:(1)构造出来一个类的实例 (2)对构造出来个一个类的实例(对象)初始化。

// 计算坐标点的距离 -- 理解java构造方法

public class java_basic_point {
	// 成员变量,属性
	int x;
	int y;
	
	// 默认无参构造器
	public java_basic_point() {
		System.out.println("默认构造");
	}
	// 有参构造1
	public java_basic_point(int a, int b) {
		System.out.println("有参数构造");
		x = a;
		y = b;
	}
	// 有参构造2(重载)
	public java_basic_point(int a) {
		this(a,a); // 调用上面的有参构造1
	}
	
	
	/*
	 * 点距离的计算公式
	 */
	
	// 点到原点的距离(无参)
	public double distance() {
		return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));
	}
	
	// 到某个点的距离(参数为坐标点)
	public double distance(int a, int b) {
		return Math.sqrt(Math.pow(this.x-a, 2) + Math.pow(this.y-b, 2));
	}
	
	// (参数为点对象)
	public double distance(java_basic_point p) {
		return distance(p.x, p.y);
	}
	
	//  主函数
	public static void main(String[] args) {
		java_basic_point p1 = new java_basic_point(3, 2); // 实例化p1
		System.out.println("P1的坐标是:" + p1.x + "," + p1.y);
		
		java_basic_point p2 = new java_basic_point(5); //实例化p2
		System.out.println("P2的坐标是:" + p2.x + "," + p2.y);
		
		System.out.println("==============================");
		
		java_basic_point p = new java_basic_point(6, 8); // 实例化p
		System.out.println("距离原点的距离" + p.distance());
		System.out.println("到给定点的距离" + p.distance(3, 3));
		System.out.println("到某个点对象的距离" + p.distance(p1));
	}
	
	

}

【输出】

有参数构造
P1的坐标是:3,2
有参数构造
P2的坐标是:5,5
==============================
有参数构造
距离原点的距离10.0
到给定点的距离5.830951894845301
到某个点对象的距离6.708203932499369

 

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值