栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础笔记(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础笔记(一)

面向对象—构造方法

在Java中,有一种特殊的方法被称为构造方法,也被称为构造函数或者是构造器,通过提供这个构造器,我们就可以确保我们的每一个对象都被初始化,当然我们的构造方法只能在对象的创建时期调用以此,保证我们的初始化的进行。我们的构造方法比较特殊,没有参数类型和返回值,它的名称要和类名保持一致。

class Apple{
	int sum;
	String color;

	public Apple(){}
	public Apple(int sum){}
	public Apple(String color){}
	public Apple(int sum, String color){}
	

上面定义了一个Apple类,我们可以发现Apple类没有参数类型与返回值,并且有多个以Apple重名的方法,而且各个Apple的参数列表都不一样,其实这就是一种多态的表现。

class createApple {
	public static void main(String[] args) {
		Apple apple1 = new Apple();
		Apple apple2 = new Apple(1);
		Apple apple3 = new Apple("red");
		Apple apple4 = new Apple(2,"color");
	}
}

如果此时我们定义了四个Apple对象,并调用的Apple的四种不同的构造方法,其中不加任何的参数的构造方法被称为默认的构造方法,其中不加任何参数的构造方法被称为默认的构造方法,如果类中没有定义任何的构造方法,那么JVM会自动生成一个构造方法,需要注意的是如果我们手动定义了任何一个构造方法,JVM就不再为你提供默认的构造器,此时我们必须手动指定,否则就会出现编译错误
显示的错误就是,我们必须要提供一个Apple带有int参数的构造函数,而默认的无参构造器函数没有被允许使用。

方法重载

在Java中还有一个很重要的概念就是方法的重载,它是类名的不同表现形式,刚刚所提到的Apple的构造函数,其实构造函数也是重载的一种,因此每一个重载的方法都有独一无二的参数列表,其中包括参数的类型,顺序,参数数量。
重载的条件:

  • 方法名称必须相同
  • 参数列表必须不同(个数,类型,参数类型排列顺序不同)
  • 方法的返回类型可以相同也可以不相同
  • 仅仅返回类型不同不足以称为方法的重载
  • 重载是发生在编译时的,因此编译器可以根据参数的类型来选择使用哪个方法
方法重写

重写与重载的名字虽然相似,其实是完全不同的东西,方法重写的描述是对子类和父类之间的,而重载仅指在同一类当中。

class Fruit{
	public void eat(){
		System.out.println("eat fruit");
	}
}

class Apple extends Fruit{
	@Override 
	public void eat(){
		System.out.println("eat apple");
	}
}

重写的原则

  • 重写的方法必须要和父类保持一致,包括返回类型,方法名,参数列表也都一样
  • 重写的方法可以使用**@Override**注解来标识
  • 子类中重写的方法的访问权限不能低于父类中的方法的权限
初始化 类的初始化

其实在我们使用 new 关键字创建一个对象的时候,是调用了对象无参数的构造方法来进行初始化,这个无参数的构造方法可以隐藏,由JVM自动添加,也就是说构造函数能够确保类的初始化。

初始化顺序
  • 静态属性:static 开头定义的属性
  • 静态方法块:static{} 包起来的代码块
  • 普通属性:非 static 定义的属性
  • 普通方法块:{} 包起来的代码块
  • 构造函数:类名相同的方法
  • 方法:普通方法
public class LifeCycle {
	// 静态属性
	private static String staticField = getStaticField();
	// 静态方法块
	static {
		System.out.println(staticField);
		System.out.println("静态方法块初始化");
	}
	// 普通属性
	private String field = getField();
	// 普通方法块
	{
		System.out.println(field);
	}
	// 构造函数
	public LifeCycle() {
		System.out.println("构造函数初始化");
	}
	public static String getStaticField() {
		String statiFiled = "Static Field Initial";
		return statiFiled;
	}
	public static String getField() {
		String filed = "Field Initial";
		return filed;
	}
	// 主函数
	public static void main(String[] argc) {
		new LifeCycle();
	}
}
可变参数列表

Java 中一种数组冷门的用法就是可变参数

public int add(int... numbers){
	int sum = 0;
	for(int num : numbers){
		sum += num;
	}
	return sum;
}
add(new Integer[] {1,2,3}); //传递数组
对象的销毁

虽然 Java 语言是基于 C++ 的,但是它和 C/C++ 一个重要的特征就是不需要手动管理对象的 销毁工作。
在 Java 中,我们不再需要手动管理对象的销毁,它是由Java虚拟机进行管理和销毁。虽然我们不需要手动管理对象,但是需要知道对象作用域这个概念。

访问控制权限

Java中成员的访问权限共有四种,分别是 public、protected、default、private

继承

继承是所有OOP语言和Java语言都不可或缺的一部分。只要我们创建一个类,就隐式的继承自Object父类,这叫做隐式指定,而extends即为显示指定。

多态

多态指的是同一个行为具有多个不同表现形式。是指一个类实例(对象)的相同方法在不同情形下具有不同表现形式。封装和继承为多态的基础。
多态的实现三个条件

  • 继承
  • 重写父类方法
  • 父类引用指向子类对象
组合

组合就是将对象引用置于新类中即可。组合也是一种提高类的复用性的一种方式。如果你想让类具有更多的拓展功能,需要多用组合,少用继承。

代理

代理大致就是,A想要调用B类的方法,A不会直接调用,A会在自己的类中创建一个B对象的代理,再由调用B的方法。

public class Destination{
	public void todo(){
		System.out.println("control...");
	}
}

public class Device {
	private String name;
	private Destination destination;
	private DeviceController deviceController;
	
	public void control(Destination destination){
		destination.todo();
	}
}

public class DeviceController{
	private Device name;
	private Destination destination;
	
	public void control(Destination destination){
		destination.todo();
	}
}
向上转型

向上转型代表了父类与子类的关系,其实父类和子类之间不仅仅有向上转型,还有向下转型,它们的转型后的范围不一样。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353707.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号