Java学习之Day7

一、代码块

1.局部代码块

    书写位置:方法中。

    作用:限制作用域。

public void fun1() {
	{
			
	    int num = 10;
	    System.out.println(num);
	}
}

2.构造代码块

    书写位置:类中方法外。

    代码的执行:

    1.构造代码块是由系统调用的;

    2.只要创建对象,就会调用;

    3.构造代码块在构造方法之前被调用。

    作用:当有一个方法需要每一个对象都调用的时候,可以将这个方法在构造代码块中调用(不常用)。

class Person{
    {
        System.out.println("我是构造代码块");
    }
}

3.静态代码块

    使用关键词static修饰的代码块。

    位置:类中方法外。

    静态代码块的调用:

    1.随着类的加载而加载;

    2.只加载一次

    3.在构造代码块之前执行。

4.同步代码块(多线程部分提到)


二、继承

面向对象的三大特征之一。

    继承:

    1.继承可以传递;

    2.继承的是属性和行为(不是全部继承);

    3.建立了类与类之间的关系。

class Cat extends Animal{
}

    继承的好处:

    1.减少代码量;

    2.提高工作效率;

    3.增强了类与类之间的关系(让类和类的关系更加紧密)。

    继承的弊端:违反了低耦合(低耦合:希望类与类之间减少联系)

    使用继承一定要符合逻辑

简单的继承:

// 关键词 子类 extends 父类
// 猫类 继承了动物类
class Cat extends Animal{
	// 猫的独特行为
	public void cry() {
		System.out.println("喵喵喵");
	}
}

// 狗类 继承了动物类
class Dog extends Animal{
	// 狗的独特行为
	public void cry() {
		System.out.println("汪汪汪");
	}
}

    Java中只允许单继承(类与类之间)(可以同过接口来体现多继承)

    Java中可以多层继承,多层继承会出现继承体系(继承链),学习一个体系的时候,先看顶层的类,使用最底层的类创建对象调用方法。

    当使用这个体系的方法和属性时,如果只使用共有的方法和属性,一般选择使用继承链最顶端的类。如果想使用特有的方法和属性,一般选择使用继承链最末端的类。

    如果一个类没有写继承,那么这个类默认继承Object类(基类)

继承中得构造方法:

    注意:构造方法是不能继承的。

    当创建子类的时候,为了保证继承的完整性(不论创建子类对象的时候使用的是无参还是有参构造),系统会默认帮你调用父类中的无参构造方法。

class Son extends Father{
	public Son() {
		// 系统帮你在构造方法的第一行 写了一句代码
		// 如果你不写 系统会默认帮你加上
		super();//调用父类的构造方法
		System.out.println("我是Son类的无参构造方法");
	}

    super关键字:在子类中代表的是父类的对象。在子类中,除了可以同过super关键字调问父类属性或方法,还可以通过this关键字来调用(子类中没有这个属性或方法时,就去父类中寻找)。


    在子类中可以通过super()调用父类的无参构造方法,那么父类中没有无参构造方法时,super()还能否调用到父类的无参构造方法呢?答案是不能。如果父类中只有有参构造方法,那就要在构造方法的第一行通过super调用父类的有参构造方法。

方法的重写(Override)

    方法的重写的前提是至少要有两个类,并且类之间要有继承关系。

    方法的重写相当于对父类的该方法进行升级,重写要求重写的方法名称、关键词、返回值等和父类的方法完全一致。

class C{
	public void print() {
		System.out.println("我是C类的print方法");
	}
}

class D extends C{
	public void print() {
		// 重写父类的方法时
		// 调不调用父类的方法 要根据你的需求而定
		super.print();
		System.out.println("我是D类的print方法");
	}
}

final关键字

    1.可以修饰方法,被修饰的方法不能被重写;

    2.可以修饰类,被修饰的类不能被继承;

    3.修饰变量,被修饰的变量不能被修改;

    4.修饰引用数据类型时,不能对被修饰的变量重新指向(地址不能修改),但不影响对象中属性的修改。

猜你喜欢

转载自blog.csdn.net/ande1922/article/details/80272233
今日推荐