day10作业

1.Java中,用{}括起来的代码称为代码块。

代码块分为局部代码块,构造代码块,静态代码块,同步代码块

局部代码块:在方法中出现,限定生命周期,及早释放,提高内存利用率

构造代码块:在类中方法外出现,多个构造方法中相同的代码块放到一起,每次调用构造都执行,并且在构造方法前执行

静态代码块:在类中方法外出现,并加上static修饰符;用于给类进行初始化,在加载的时候就执行,并且只执行一次。一般用于加载驱动,位于主方法类中的静态代码块先于主方法执行。

2.静态代码块——构造代码块——构造方法

3.让类与类之间产生关系,子父类关系。

4.a.提高了代码的复用性

b.提高了代码的维护性

c.让类与类之间产生了关系,是多态的前提

5.a:java只支持单继承,不支持多继承

b:java支持多重继承

6.注意事项:

a:子类只能继承父类所有非私有的成员(成员方法和成员变量)

b:子类不能继承父类的构造方法,但是可以通过关键字super去访问父类的构造方法

c:不要为了部分功能而去继承

继承体现的是一种关系“is a”,如果有两个类A,B,只有他们符合A是B的一种或者B是A的一种,就可以考虑使用继承。

7.A:如果子类中没有这个成员变量就访问父类中的该成员变量,如果子类中有这个成员变量,就默认使用该成员变量。

B:子类中所有的构造方法都会访问父类中的空参构造。

8.在继承中,子类中所有的构造方法都会访问父类中的空参构造。假如父类中没有无参构造,会报错。

有几种解决方式:1.在父类中加一个无参构造;2.在子类中用super关键字取访问父类中的带参构造;3.子类通过this去调用本类中的其他构造方法

9.方法重写是子类重出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致的;方法重载是本类中出现的方法名一样,参数列表不同的方法,与返回值类型无关。

overload可以改变返回值类型,看参数列表。

this:谁来引用我,我就代表谁

super:代表当前对象父类的引用

this.成员变量:调用本类的成员变量,也可以调用父类的成员变量(本类没有的情况下)

super.成员变量:调用父类的成员变量

class Test_Extends {
    public static void main(String[] args) {
        /*Son s = new Son();
        s.son();*/

        Cat c = new Cat();
        c.show1();
        c.show2();

        System.out.println("------------------------");

        Dog d = new Dog();
        d.show1();
        d.show2();
    }
}

/*class Father {
    private aint num1 = 10;
    int num2 = 20;
}
class Son extends Father {
    int num1 = 20;
    public void son(){
        System.out.println(super.num1);
        System.out.println(this.num2);
    }
}*/

class Animal {
    String color = "white";
    int legs = 4;
    public void show1(){
        System.out.println("白色");
    }
    public void show2(){
        System.out.println("有4条腿");
    }
}

class Cat extends Animal {
}

class Dog extends Animal {
}

11.1.修饰类,类不能被继承

2.修饰变量,变量就变成了常量,只能被赋值一次

3.修饰方法,方法不能被重写

12.A.final关键字修饰局部变量

1.基本类型,是值不能被改变

2.引用类型,是地址值不能被改变,对象中的属性可以改变。

B.final修饰变量的初始化时机

1.显式初始化(此时成员的默认初始化值0,是无效值)

2.在对象构造完毕前即可(错误:变量 num 未在默认构造器中初始化)

原文地址:https://www.cnblogs.com/lyx210019/p/9306606.html