构造方法

面向对象

僤鯓⒐⒋嵵緔 提交于 2020-02-16 16:31:18
面向对象 封装 一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法 封装的优点 良好的封装能够减少耦合 类内部的结构可以自由修改 可以对成员变量进行更精确的控制 隐藏信息,实现细节 实现方式:属性私有+ setter()/getter() 继承 子类继承父类的特征和行为,继承是面向对象的基石 java 不支持多继承,实现接口可视为弱继承 非私有、静态的属性和方法属于类,不能被继承,但能用子类名访问 非私有、非静态的属性和方法可以被继承 父类的私有属性 子类具有拥有权,但是不具有使用权 可以使用父类继承来的 setter/getter 方法,访问该属性 构造方法不能被继承,在继承中 父类没有定义构造方法或定义了无参数的构造方法,子类不须要定义构造方法 父类只有带参数的构造方法时,子类也不能有无参构造,必须定义带参构造,且要在第一行通过 super 显式调用父类构造方法 final 修饰的成员 final 修饰的属性可以被继承 final 修饰的方法可以被继承,不能被重写 分析内存后发现,当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后在父类对象的外部放上子类独有的属性,两者合起来成为一个子类的对象 所以,子类继承了父类的所有属性和方法或子类拥有父类的所有属性和方法是对的,只不过父类的私有属性和方法,子类是无法直接访到的,这也是

构造代码块,静态代码块

佐手、 提交于 2020-02-16 14:40:53
代码块的分类 构造代码块 直接定义在中并且前面没有static关键字的代码块,不能定义在成员方法中。每次创建实例化对象的过程中都会调用构造代码块块,且构造代码块的在构造函数之前被调用。 静态代码块 在Java中用static修饰的代码块,静态代码块随着类的加载而执行,且静态代码块一定在主函数main之前执行。如果函数之中有多个静态代码块,则先定义的先执行,后定义的后执行 图片中,我们可以看到在Demo3中的main之后我们定义了一个stati修饰的代码块,程序执行时,static中的输出内容却在主函数里面的类对象创建之前执行。 相关解析 在上面的代码中,我们可以看到,在类Demo3中 ,我们分别定义了 static Demo3 demo1 = new Demo3(); static Demo3 demo2 = new Demo3(); 接着是构造代码块 { System.out.println(“构造代码块”); // 1 } 然后是静态代码块 static { System.out.println(“静态代码块”); // 2 } 接着是无参构造方法 public Demo3() { System.out.println(“构造方法”); // 3 } 程序的执行过程是先执行 static Demo3 demo1 = new Demo3(); static Demo3 demo2

23种设计模式(5):原型模式

China☆狼群 提交于 2020-02-15 03:43:34
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式。 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedException异常。 重写Object类中的clone方法。Java中,所有类的父类都是Object类,Object类中有一个clone方法,作用是返回对象的一个拷贝,但是其作用域protected类型的,一般的类无法调用,因此,Prototype类需要将clone方法的作用域修改为public类型。 原型模式是一种比较简单的模式,也非常容易理解,实现一个接口,重写一个方法即完成了原型模式。在实际应用中,原型模式很少单独出现。经常与其他模式混用,他的原型类Prototype也常用抽象类来替代。 实现代码: class Prototype implements Cloneable { public Prototype clone(){ Prototype prototype = null; try{

java基础知识——反射

…衆ロ難τιáo~ 提交于 2020-02-15 02:14:16
反射原理 除了int,float等基本类型外,Java的其他类型全部都是class(包括interface),即class的本质是数据类型(Type) 。而class是由JVM在执行过程中动态加载的。JVM在第一次读取到一种class类型时(也是第一次要使用时才读取),将其加载进内存。每加载一种class,JVM就为其创建一个Class类型的实例(例如:Object 类中的 getClass( ) 方法就将返回一个 Class 类型的实例),并关联起来。注意: 这里的Class类型是一个名叫Class的class 。源码如下: public final class Class { private Class() {} } 以String类为例,当JVM加载String类时,它首先读取String.class文件到内存,然后,为String类创建一个Class实例并与之关联起来: Class cls = new Class(String); 这个Class实例是JVM内部创建的,我们自己的Java程序是无法创建Class实例的,因为Class类的构造方法是private,所以, JVM持有的每个Class实例都指向一个数据类型(类或interface) : 并且,一个Class实例包含了该class的所有完整信息: 由于JVM为每个加载的class创建了对应的Class实例

单例模式

本小妞迷上赌 提交于 2020-02-14 19:56:37
只生成一个实例的模式,我们称之为 单例模式。 原文地址: 单例模式 - 只有一个实例 博客地址: http://blog.720ui.com/ 程序在运行的时候,通常会有很多的实例。例如,我们创建 100 个字符串的时候,会生成 100 个 String 类的实例。 但是,有的时候,我们只想要类的实例只存在一个。例如,「你猜我画」中的画板,在一个房间中的用户需要共用一个画板实例,而不是每个用户都分配一个画板的实例。 此外,对于数据库连接、线程池、配置文件解析加载等一些非常耗时,占用系统资源的操作,并且还存在频繁创建和销毁对象,如果每次都创建一个实例,这个系统开销是非常恐怖的,所以,我们可以始终使用一个公共的实例,以节约系统开销。 像这样确保只生成一个实例的模式,我们称之为 单例模式。 如何理解单例模式 单例模式的目的在于,一个类只有一个实例存在,即保证一个类在内存中的对象唯一性。 现在,我们来理解这个类图。 静态类成员变量 Singleton 类定义的静态的 instance 成员变量,并将其初始化为 Singleton 类的实例。这样,就可以保证单例类只有一个实例。 私有的构造方法 Singleton 类的构造方法是私有的,这个设计的目的在于,防止类外部调用该构造方法。单例模式必须要确保在任何情况下,都只能生成一个实例。为了达到这个目的,必须设置构造方法为私有的。换句话说

this的用法

偶尔善良 提交于 2020-02-14 02:44:17
this指当前对象。this关键字主要有三个应用: (1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法;this.print();//调用普通方法 (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。 来源: https://www.cnblogs.com/wskb/p/10990349.html

Java基础(basis)-----关键字this和super的作用

ε祈祈猫儿з 提交于 2020-02-14 02:11:35
1.关键字this 可以用来修饰属性、方法、构造器;this理解为当前对象或当前正在创建的对象 局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量 可以在构造器中通过“this(形参)”的方式显示的调用本类中其它重载的指定的构造器, 在构造器内部必须声明在首行 package com.keyword; /** * this关键字 * * @author yyx 2019年8月19日 */ public class ThisDemo { private String stuName; private Integer stuAge; private String stuSex; public ThisDemo() { super(); System.out.println("无参构造函数"); this.sayWord(); //this调用方法 } public ThisDemo(String stuName, Integer stuAge) { this(); // 调用重载的构造方法 this.stuName = stuName; this.stuAge = stuAge; System.out.println("两个参数的构造函数"); } public ThisDemo(String stuName, Integer stuAge,

原型模式详解

坚强是说给别人听的谎言 提交于 2020-02-13 23:20:26
  定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype 原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。   在JAVA语言中使用原型模式是非常简单的,这是因为Object类当中提供了一个本地方法clone,而JAVA中的任何类只要实现了Cloneable标识接口,就可以使用clone方法来进行对象的拷贝。 原型模式详解 优点:   使用原型模式创建对象比直接new一个对象在性能上要好的多,因为Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。 使用原型模式的另一个好处是简化对象的创建,使得创建对象就像我们在编辑文档时的复制粘贴一样简单。 注意事项: 使用原型模式复制对象不会调用类的构造方法。因为对象的复制是通过调用Object类的clone方法来完成的,它直接在内存中复制数据,因此不会调用到类的构造方法。不但构造方法中的代码不会执行,甚至连访问权限都对原型模式无效。还记得单例模式吗?单例模式中,只要将构造方法的访问权限设置为private型,就可以实现单例

JavaSE学习笔记-Day8

Deadly 提交于 2020-02-13 11:11:09
孔子云:温故而知新,可以为师矣。那么今天就来回顾一下这一个星期所学的知识。 第一章: 初步认识Java Java版本:SE 、 EE 、 ME, SE定位于计算机,EE定位于服务器。 Java优势: 跨平台性 (不区分操作系统),面向对象,多线程,高性能等等。 JVM 、JRE 、JDK:JVM是跨平台性的核心机制,运行Java只要JRE,开发需要JDK。 Java运行机制 :先编译成.class文件,再解释运行。 "Hello World"程序: main方法是Java程序的入口。输出语句的固定写法。 第二章: Java面向对象编程基础 面向过程和 面向对象 思想:万物皆可对象,要宏观把控系统。 类和对象: 类是模板,对象是实例。 1)类一般由三大部分组成(成员):成员变量、成员方法、构造方法。类名要符合驼峰原则。 2)看见new这个关键字就是在创建对象,其含义是调用类的构造方法创建实例。 3) 匿名对象 :一般对象都会给个名字,没名字的就是匿名对象。 Java数据类型: 两类,基本数据类型和引用数据类型。 1)整型默认为int,浮点型默认为double,long型数据在末尾加"l/L",float型数据在末尾加"f/F"。浮点型数据避免直接比较大小! 2)自动数据类型转化:范围小的可自动转换成范围大的,有部分转化过程可能出现精度丢失,所以这也不是绝对安全的。 3)强制类型转化

Java反射机制的学习

柔情痞子 提交于 2020-02-12 22:16:10
在学习java的spring框架时老是要与java的反射机制打交道,为止花了一些时间来了解java的反射机制。 在创建数据库的jdbc也有遇到java的反射机制比如MySQL的JDBC,Class.forName("com.mysql*"). 一:Java的反射(reflection)是什么? 我的一个大概的理解是:java反射是用来获取一个java类本身的一些信息,比如类里面声明的静态变量,实例变量,公有方法,私有方法。 除此之外,反射机制还能帮我们获取,或者创建一个类的对象。 Java的反射机制主要通过Java.lang.Class和Java.lang.reflect包下的API来实现的,而且java反射机制是与运行中的JVM打交道的。 来看Oracle官方文档对反射机制的两种解释: 解释一: Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate on their underlying counterparts, within security restrictions.