定制小程序网站开发公司,向国旗致敬做时代新人网站,网站的产品上传图片,wordpress vul目录 面向对象
面向对象三大特征
封装
继承
多态
多态
深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
浅拷贝
深拷贝 面向对象
万物皆为对象#xff0c;也就是描述某个事物解决问题的过程中所发生的事情。
面向对象三大特征
封装
封装是指把一个对象的状态信息也就是描述某个事物解决问题的过程中所发生的事情。
面向对象三大特征
封装
封装是指把一个对象的状态信息也就是属性隐藏在对象内部不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。就好像我们看不到挂在墙上的空调的内部的零件信息也就是属性但是可以通过遥控器方法来控制空调。如果属性不想被外界访问我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法那么这个类也没有什么意义了。就好像如果没有空调遥控器那么我们就无法操控空凋制冷空调本身就没有意义了当然现在还有很多其他方法 这里只是为了举例子。
public class Student {private int id;//id属性私有化private String name;//name属性私有化//获取id的方法public int getId() {return id;}//设置id的方法public void setId(int id) {this.id id;}//获取name的方法public String getName() {return name;}//设置name的方法public void setName(String name) {this.name name;}
}
继承
不同类型的对象相互之间经常有一定数量的共同点。例如小明同学、小红同学、小李同学都共享学生的特性班级、学号等。同时每一个对象还定义了额外的特性使得他们与众不同。例如小明的数学比较好小红的性格惹人喜爱小李的力气比较大。继承是使用已存在的类的定义作为基础建立新类的技术新类的定义可以增加新的数据或新的功能也可以用父类的功能但不能选择性地继承父类。通过使用继承可以快速地创建新的类可以提高代码的重用程序的可维护性节省大量创建新类的时间 提高我们的开发效率。
关于继承如下 3 点请记住
子类拥有父类对象所有的属性和方法包括私有属性和私有方法但是父类中的私有属性和方法子类是无法访问只是拥有。子类可以拥有自己属性和方法即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。以后介绍。
多态
关于继承如下 3 点请记住
子类拥有父类对象所有的属性和方法包括私有属性和私有方法但是父类中的私有属性和方法子类是无法访问只是拥有。子类可以拥有自己属性和方法即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。以后介绍。 public interface MyInterface {default void defaultMethod() {System.out.println(This is a default method.);}
}
Java 8 引入的static 方法无法在实现类中被覆盖只能通过接口名直接调用 MyInterface.staticMethod()类似于类中的静态方法。static 方法通常用于定义一些通用的、与接口相关的工具方法一般很少用。
public interface MyInterface {static void staticMethod() {System.out.println(This is a static method in the interface.);}
}
Java 9 允许在接口中使用 private 方法。private方法可以用于在接口内部共享代码不对外暴露。
public interface MyInterface {// default 方法default void defaultMethod() {commonMethod();}// static 方法static void staticMethod() {commonMethod();}// 私有静态方法可以被 static 和 default 方法调用private static void commonMethod() {System.out.println(This is a private method used internally.);}// 实例私有方法只能被 default 方法调用。private void instanceCommonMethod() {System.out.println(This is a private instance method used internally.);}
}
深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
关于深拷贝和浅拷贝区别我这里先给结论
浅拷贝浅拷贝会在堆上创建一个新的对象区别于引用拷贝的一点不过如果原对象内部的属性是引用类型的话浅拷贝会直接复制内部对象的引用地址也就是说拷贝对象和原对象共用同一个内部对象。深拷贝深拷贝会完全复制整个对象包括这个对象所包含的内部对象。
上面的结论没有完全理解的话也没关系我们来看一个具体的案例
浅拷贝
浅拷贝的示例代码如下我们这里实现了 Cloneable 接口并重写了 clone() 方法。
clone() 方法的实现很简单直接调用的是父类 Object 的 clone() 方法。
public class Address implements Cloneable{private String name;// 省略构造函数、GetterSetter方法Overridepublic Address clone() {try {return (Address) super.clone();} catch (CloneNotSupportedException e) {throw new AssertionError();}}
}public class Person implements Cloneable {private Address address;// 省略构造函数、GetterSetter方法Overridepublic Person clone() {try {Person person (Person) super.clone();return person;} catch (CloneNotSupportedException e) {throw new AssertionError();}}
}
测试
Person person1 new Person(new Address(武汉));
Person person1Copy person1.clone();
// true
System.out.println(person1.getAddress() person1Copy.getAddress());
从输出结构就可以看出 person1 的克隆对象和 person1 使用的仍然是同一个 Address 对象。
深拷贝
这里我们简单对 Person 类的 clone() 方法进行修改连带着要把 Person 对象内部的 Address 对象一起复制。
Override
public Person clone() {try {Person person (Person) super.clone();person.setAddress(person.getAddress().clone());return person;} catch (CloneNotSupportedException e) {throw new AssertionError();}
}
测试
Person person1 new Person(new Address(武汉));
Person person1Copy person1.clone();
// false
System.out.println(person1.getAddress() person1Copy.getAddress());
从输出结构就可以看出显然 person1 的克隆对象和 person1 包含的 Address 对象已经是不同的了。
那什么是引用拷贝呢 简单来说引用拷贝就是两个不同的引用指向同一个对象。
我专门画了一张图来描述浅拷贝、深拷贝、引用拷贝 三层架构有什么
三层架构是软件开发中常用的设计模式它的核心思想是将应用程序分为三个主要层次表现层UI、业务逻辑层BLL和数据访问层DAL。这种结构旨在实现高内聚和低耦合提高代码的可维护性和可扩展性。
三层架构的组成 表现层UI负责与用户的直接交互接收用户的输入并展示处理结果。它只关注用户界面的展示不涉及业务逻辑处理。 业务逻辑层BLL作为UI层和DAL层之间的桥梁负责实现具体的业务逻辑如数据验证、计算和业务规则等。 数据访问层DAL直接与数据库交互负责数据的增删改查操作将业务层处理的数据持久化到数据库中。
实体层的作用
实体层Entity虽不属于三层架构的任何一层但它在整个架构中扮演着至关重要的角色。实体层通过实体类封装数据实现了数据的封装和在各层之间的传递使得每一层都可以专注于自己的职责而不必关心其他层的具体实现。
三层架构的优势
三层架构相较于传统的两层架构具有明显的优势 结构清晰每一层都有明确的职责便于开发和维护。 耦合度低各层之间通过接口或实体类进行通信降低了层与层之间的依赖。 可维护性高每层独立一层的变化不会影响到其他层便于系统的更新和维护。 可扩展性高新的需求可以通过增加或修改特定层来实现而不需要改动整个系统。
三层架构的实际应用
在实际应用中三层架构可以类比为餐厅的运作模式其中服务员、厨师和采购员分别对应UI层、BLL层和DAL层。服务员接待顾客并传达顾客的需求给厨师厨师根据需求准备菜品而采购员则负责根据厨师的需求采购食材。这样的分工合作模式使得餐厅运作高效且有序。
三层架构的局限性
尽管三层架构有诸多优点但它也存在一些局限性如可能会降低系统性能因为数据的处理需要经过多个层次。此外当需要在表现层增加新功能时可能会导致业务逻辑层和数据访问层都需要进行相应的修改从而增加了代码量和工作量。
总的来说三层架构通过分层的方式提供了一种清晰、灵活且高效的软件开发模式使得开发人员可以更专注于核心业务逻辑的分析、设计和开发加快项目进度提高开发效率。它广泛应用于各种规模的软件项目中特别是那些需要良好维护性和扩展性的大型企业级应用。