第七天 2018.8.6

今日任务:
1. 方法的参数传递方绘制
2. 封装
3. Static
4. 继承
5. Super
6. 包、访问权限修饰修饰符
7. 方法重写

1.方法的参数传递、返回值

基本类型数据传递的是她本身
引用类型数据传递是对象对象的地址,而非对象本身

public class PassValue{
    public void change(int x){
        x = 100;
        System.out.println(“方法中x==” + x);
    }
}
public class Test{
     public static void main(String[] args){
        PassValue pv = new PassValue();
        int x = 5;
        System.out.println(“方法调用之前x==” + x);
        pv.change(x);
        System.out.println(“方法调用之后x==” + x);
    }
}

如代码所示,输出分别为,5,100,5

public class PassValue2{
    int x ;
    public void change(PassValue2 obj){
        obj.x = 100;
        System.out.println(“方法中obj.x==” + obj.x);
    }
}

public class Test{
   public static void main(String[] args){
        PassValue2 p = new PassValue2();
        p.x = 5;
        System.out.println(“方法调用之前p.x==” + p.x);
        p.change(p);
        System.out.println(“方法调用之后p.x==” + p.x);
    }
}

而这个代码则会改变

2.封装

Java语言三大特征:封装、继承、多态
封装是不可见,隐藏
在变量之前加private,然后添加getset方法。
类设计原则,成员变量私有化,公开方法。

3.Static

当一个属性属于整个类而不是每个对象的时候(比如人类的人口数量),使用该关键字修饰
方法同理。
Static修饰的属性存储在方法区中,而在方法区中的空间,垃圾回收器基本不会回收
如果这个对象只有一个,那么类中的属性和方法都用静态的,一般工具类和数学类的方法都是静态的。比如Arrays。方法名()
局部代码块就在方法中用于规划作用域,提前释放空间。
动态代码块(实例代码块),在构造方法前就执行,每创建一个对象执行一次,可以用于统一初始化属性。
静态代码块用于初始化静态属性,只在类被加载时执行一次,并且优先于动态代码块。
由于构造方法调用其他构造方法必须在第一行,如果想在调用前执行一些代码,则可以写在动态代码块中

4.继承

父类,根类,基类&&子类,派生类
在生成派生类对象时,基类对象也同样会被生成,基类对象被包含在派生类之中。如图中dog类为子类,animal类为父类。再创建一个派生类就会再创建一个基类对象。
私有成员和构造方法不能被继承,一个子类只能有一个父类,继承具有传递性。

5.Super

如果说this是指的当前对象的话,super就是指的当前对象中的父类对象。
当子类中定义了和父类同名的属性时,若想在再累中访问父类中的同名属性,需要加上super。
同样的super也必须在构造方法第一行。

6.包、访问权限修饰符

Protected在不同包的时候只有子类能用,不同包的其他类不能用。

7.方法重写

Overlord重载
Override重写
Java1.7之后返回值只需要和基类兼容即可
方法重写后派生类的访问修饰符不能比基类严格。
如果父类又一个静态方法,子类也有一个同名的静态方法,这种情况不被称为重写,而是隐藏。如果没有,则直接继承。

8.Object类

Native关键字表示该方法不是用Java写成的。
Equal方法判断两个对象是否相等如果是基本类型则是实际数据,引用类型则是该对象的地址(其实就是对象在栈内的值)
在不重写的前提下,object的equal和==是一个作用。
Hashcode方法,相当于获取对象的地址
toString方法,获取对象的全限定类名和16进制的地址

猜你喜欢

转载自blog.csdn.net/qq_34939549/article/details/81456935