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

【JAVA全栈工程师 基础笔记】

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

【JAVA全栈工程师 基础笔记】

第二周笔记
      • 可见性
      • 单例模式
      • 重载(overload)与重写(override)
      • 实参与形参
      • 多态
      • ==和equals的区别

可见性
publicprotecteddefualtprivate
同一类中YESYESYESYES
同一包中YESYESYES
子类YESYES
不同包中YES
单例模式

单例模式的要点有三个: 一是某个类只能有一个实例(对象);二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
单例模式的目的:保证该类只有一个对象。怎么办?
第一步:把构造方法私有
第二步:在成员位置自己创建一个对象(即创建一个成员变量)
第三步:通过一个公共的方法提供访问

单例模式的优点如下:
√ 实例控制: 单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保
所有对象都访问唯一实例。
√ 灵活性: 因为类控制了实例化过程,所以类可以灵活更改实例化过程。

package com.etime12;


public class Animal {
    private String name;
    private int age;
    private static Animal animal = null;

    private Animal() {
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public static Animal getAnimal() {
        return animal;
    }

    public static void setAnimal(Animal animal) {
        Animal.animal = animal;
    }

    public static Animal getObject() {
        if (animal == null)
            animal = new Animal();
        return animal;
    }
}



package com.etime12;

public class Test04 {
    public static void main(String[] args) {
        Animal a = Animal.getObject();
        System.out.println(a);
        a.setAge(2);
        a.setName("小白");
        System.out.println(a.getName() + a.getAge());

        a.setName("小黑");
        a.setAge(4);
        System.out.println(a.getName() + a.getAge());
        System.out.println(a);
    }
}

package com.etime12;

public class TestDog {
    
    private final static TestDog  dog = new TestDog();

    private TestDog(){

    }

    public static  TestDog getObject(){
        return dog;
    }
    
    private static TestDog dog = null;

    private static TestDog  getObject() {
    }
    public TestDog dog(){
        if (dog==null){
            dog = new TestDog();
        }
        return dog;
    } 
}

重载(overload)与重写(override)

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

实参与形参

形参和实参的特点
(1)形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存

单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形

参变量。

(2)实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数

调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等

办法使参数获得确定值。

(3)实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错

误。

(4)在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给

实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用

的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

多态

多态的总结
在涉及多态的编程中,请注意以下细节:
1、静态方法
静态方法不能被重写,所以静态方法也没有多态性
2、成员变量
成员变量不具备多态性。成员变量的值取决于引用所属的类
3、成员方法
编译时:检查引用变量所属类中是否有所调用的方法。运行时:调用实际对象所属类中的重写方法。

==和equals的区别

==号和 equals 方法的区别:
== 是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是两个对象的内存地址。
equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,通过查看object类中的源码可知:如果没有重写object类中的equals方法,equals方法和==号比较引用数据类型无区别。
小结: 默认情况下equals比较的是两个对象的内存地址。但是,这么做是什么多大意义的,所以一般都会重写后的 equals方法;在重写的equals方法中比较的两个对象中的属性(成员变量)。

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

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

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