构造方法

C#学习笔记

狂风中的少年 提交于 2019-12-02 19:51:03
访问修饰符: 无访问修饰符时,默认为privite。 public:字段或方法可被其他类访问。 privite:字段或方法不可被其他类访问。 返回值类型:需与return 后的返回值类型一致 void 表示没有返回值 public void click( int n1,int n2 ); 形参要分别声明 方法重载: 1.同一类中相同名字 不同形参类型的 方法 1.同一类中相同名字 不同形参个数的 方法 封装:隐藏对象信息,留出访问接口。 快捷键:ctrl+r+e 再按enter 1.使用属性封装 public string Sex { set { _sex=value; } get { return _sex; } } 属性类型必须与字段一致,命名类似。 构造方法 如果没有显式定义的构造方法,则为默认无参数的构造方法 构造方法通常声明为public,没有返回值类型(不用写了),方法名与类名相同。 public click(int n1,int n2); 来源: https://www.cnblogs.com/sunmarvell/p/11761544.html

Class.forName()和new关键字的区别

白昼怎懂夜的黑 提交于 2019-12-02 19:45:29
Class.forName(类名) jvm动态的加载一个类。 Class.forName(类名).newInstance() 调用类的无参构造方法返回的是Object对象,需要强转为指定类型。 new 是一个关键字,调用类的构造方法(可以无参的、有参的),返回一个类的对象。 例如 EgClass egClass=(EgClass)Class.forName(“EgClass类名”).newInstance(); 问题:为什么有的类使用的时候只需要Class.forName(),不需要Class.forName().newInstance()?如加载数据库驱动时? 因为需要的内容写在了类的静态方法中了。在类的加载过程中,类的静态方法中的代码已经执行过了,不需要再实例化了。 例如: ClassA { static{ 相关内容 } } 来源: https://www.cnblogs.com/perfumeBear/p/11761282.html

Java 对象和类

霸气de小男生 提交于 2019-12-02 19:23:47
Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念。 对象 :对象是类的一个实例( 对象不是找个女朋友 ),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类 :类是一个模板,它描述一类对象的行为和状态。 下图中 男孩(boy) 、 女孩(girl) 为 类(class) ,而具体的每个人为该类的 对象(object) : Java中的对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 Java中的类 类可以看成是创建Java对象的模板。 通过下面一个简单的类来理解下Java中类的定义: public class Dog { String breed ; int age ; String color ; void barking ( ) { } void hungry ( ) { } void sleeping ( )

java六种线程池

泄露秘密 提交于 2019-12-02 18:55:54
六大线程池 本文讲述之前我们提到的 Executors 类 (注意加了s的) 中的六个静态方法,分别创建六种不同的线程池对象。之前我们已经提到, ThreadPoolExecutor 类的别称就是线程池。它是继承自 Executor 接口 (注意没有s)。 继承关系图如下。 六大静态方法创建的 ThreadPoolExecutor 对象,返回的父接口的引用,即返回的 ExecutorService 的引用。六大静态方法内部都是直接或间接调用 ThreadPoolExecutor 类的构造方法创建线程池对象,这六个静态方法本身是没有技术含量的。其中一个静态方法的源码如下,其他 5 个也类似。 ① : FixedThreadPool ,特点:固定池子中线程的个数。使用静态方法 newFixedThreadPool() 创建线程池的时候指定线程池个数。示例如下: 输出如下: ② : C achedThreadPool (弹性缓存线程池), 特点:用 newCachedThreadPool() 方法创建该线程池对象,创建之初里面一个线程都没有,当 execute 方法或 submit 方法向线程池提交任务时,会自动新建线程;如果线程池中有空余线程,则不会新建;这种线程池一般最多情况可以容纳几万个线程,里面的线程空余 60s 会被回收。创建示例: ③ : SingleThreadPool

Java继承树追溯

一笑奈何 提交于 2019-12-02 18:41:48
继承树追溯 属性/方法查找顺序:(比如:查找变量h) 1.查找当前类中有没有属性h 2.依次上溯每个父类,查看每个父类中是否有h,直EeJObject到 3.如果没找到,则出现编译错误。 4.上面步骤,只要找到h变量,则这个过程终止。 构造方法调用顺序: 构造方法第一句总是: super()来调用父类对应的构造方法。所以,流程就是:先向上追溯到 Object,然后再依次向下执行类的初始化块和构造方法,直到当前子类为止。 注:静态初始化块调用顺序,与构造方法调用顺序一样,不再重复。 package MyPro04_05; public class TestSuper { public static void main(String[] args) { System.out.println("开始创建一个ChildClass对象....."); new ChildClass(); } } class FatherClass { public FatherClass() { super(); //编译时编译器会自动加,可以不写 System.out.println("创建FatherClass"); } } class ChildClass extends FatherClass { public ChildClass() { super(); //编译时编译器会自动加,可以不写

Java线程池源码分析(一)

南楼画角 提交于 2019-12-02 18:19:44
Java线程池源码分析(一) 使用线程池场景,好处,不在本文范围内,我们分析的是源码。 带着几个问题我们来分析源码: ①线程池的池子是哪个数据结构 ②线程池构造方法的参数的含义 ③FutureTask如何获取到结果,任务没完成就ft.get()是怎么阻塞的 ④线程池提交runnable和callable是有什么区别和联系 ⑤工作线程Worker是如何处理池子和阻塞队列的任务的 ⑥ coreSize个线程数是如何保持住的 ⑦ 线程池是如何进程保持在哪里的(除非你手动shutDown) 如上是基础问题,但能衡量你是否熟悉线程池,如果答不上来还是进来补一下吧,大部分文章上来就是高并发情况下线程池数量和队列选择等等。不能循序渐进,我也看过别人写的文章,我觉得看完之后还是有很多地方不够清晰,所以自己来吧,希望对有同感的读者有帮助。 PS:本文正是按照一个提交请求来跟踪代码的,能让读者有一条清晰明了的了解线程池工作原理,解释一些基础线程池概念,线程池和阻塞队列的交互,高级部分在高级篇的博文中。 我一直习惯从使用开始入手,有些人上来就画图,各种继承关系,各种属性,我觉得这样有时候会让人上来就迷糊,所以我不用这种方式。 还是老套路上一段代码,从怎么使用开始入手: public void go () { ExecutorService pool = Executors

class对象,反射

巧了我就是萌 提交于 2019-12-02 18:17:45
获取Class对象的三种方式: 1.通过getObject() Person p=new Person(); Class c=p.getClass(); 2.通过类名.class获取字节码文件对象 Class c=Person.class 3.通过class类中的方法,将类名传给forName方法 Class c=Class.forName("Person") 反射:Constructor 对任意类,都能够知道这个类的所有属性和方法。 对任意对象,都能够调用任意一个方法和属性。 通过反射获取构造方法并使用: Class c=Class.forName("Person") 1.获取所有公共构造方法: Constructor[] cons=c.getDeclaredConstructors() 遍历cons: for(Constructor ccc:cons){sysout(ccc)} 2.获取公共有参构造方法 Constructor con1=c.getConstructor(String.class); Constructor con2=c.getConstructor(String.class,int.class,String.class); con1.newInstance("aaa") con2.newInstance("aaa",10) 3.暴力反射

类,接口,final

时光怂恿深爱的人放手 提交于 2019-12-02 16:57:33
继承extends 子类实例化过程: 子类中所有的构造方法默认都会访问父类中空参的构造方法 因为每一个子类的构造方法的提议行都有一条默认的语句super(); this super final修饰类,变量和方法 final修饰的变量是常量,只能赋值一次,赋值初始值 final修饰的变量名称都大写,有多个单词组成要用下划线连接 不能被继承,一个类不想有子类,可以加上关键字final 当一个类中有些方法可以被重写,有些不能被从写时,可以加上final 当一个类的方法被final 关键字修饰后,这个类的子类将不能从写该方法 抽象类和接口 抽象类:定义方法时不写方法体,abstract void shout() 特点: 1.抽象类不可以被实例化, 2.不包含方法体的方法为抽象方法, 3.抽象方法必修使用abstract 4.抽象类必须有其子类覆盖掉所有的抽象方法后,其子类才可以被实例化,否则该子类还是一个抽象类 一般类与抽象类的异同: 一般类和抽象类都是用于描述事物 里面都可以定义属性和行为,以及构造方法 ~一般类中不可以定义抽象方法,抽象类可以 ~一般类可以被实例化,抽象类不可以 ~一般类可以被继承,也可以不被继承,抽象类一定要被继承,需要其子类覆盖所有的抽象方法子类才可以被实例化 接口:抽象类中所有的方法都是抽象的 interface 接口名 { 常量名:全局变量

Spring 源码阅读之 深入理解 finishBeanFactoryInitialization

寵の児 提交于 2019-12-02 16:56:41
源码入口 上篇博文中我们看到了将Spring环境中的 BeanPostProcessor找出来,添加到BeanFactory中的beanPostProcessors中,统一维护,本片博文继续往下拓展,看下Spring如何实例化bean,以及如何实现在bean的实例化通过各种各样的后置处理器完成bean的增强 所以本次的程序入口是 AbstractApplicationContext 中的 finishBeanFactoryInitialization(beanFactory); ,源码如下,主要做了如下几件事 protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) { // Initialize conversion service for this context. // 为上下文初始化类型转换器 if (beanFactory.containsBean(CONVERSION_SERVICE_BEAN_NAME) && beanFactory.isTypeMatch(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class)) { beanFactory.setConversionService(

Spring原理的一些问题

こ雲淡風輕ζ 提交于 2019-12-02 16:42:36
1、什么是 Spring 框架?Spring 框架有哪些主要模块? Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring 帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring 框 架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成 Spring 框架,不 必担心 Spring 是如何在后台进行工作的。 Spring 框架至今已集成了 20 多个模块。这些模块主要被分如下图所示的核心容器、数据访问/ 集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。 2、使用 Spring 框架能带来哪些好处? 下面列举了一些使用 Spring 框架带来的主要好处: 1、Dependency Injection(DI) 方法使得构造器和 JavaBean properties 文件中的依赖关系一 目了然。 2、与 EJB 容器相比较,IOC 容器更加趋向于轻量级。这样一来 IOC 容器在有限的内存和 CPU 资源的情况下进行应用程序的开发和发布就变得十分有利。 3、Spring 并没有闭门造车,Spring 利用了已有的技术比如 ORM 框架、logging 框架、J2EE、 Quartz 和 JDK Timer,以及其他视图技术。 4、Spring