构造方法

13-方法及构造

北城余情 提交于 2019-11-28 17:46:34
方法是java语言中非常基本的一个组成。 一个class可以包含多个field但是,直接把field用public暴露给外部可能会破坏封装性,使用private修饰field,可以拒绝外部访问。 class Person { private String name; private int age; } 把field从public改成private,外部代码不能访问这些field,需要使用方法(method)来让外部代码可以间接修改field。 public class Main { public static void main(String[] args) { Person ming = new Person(); ming.setName("Xiao Ming"); // 设置name ming.setAge(12); // 设置age System.out.println(ming.getName() + ", " + ming.getAge()); } } class Person { private String name; private int age; public String getName() { return this.name; }//this表示实例本身 public void setName(String name) { this.name =

其他知识

橙三吉。 提交于 2019-11-28 16:21:56
其他知识 1.自动装箱与拆箱 装箱:将基本类型用它们对应的引用类型包装起来 拆箱:将包装类型转换为基本类型 2.在静态方法内调用一个非静态成员为什么是非法的 由于静态方法可以不通过对象进行调用,因此在静态方法里不能调用非静态变量,也不可以访问非静态变量成员 3.在java中定义一个不做事且没有参数的构造方法的作用 解决在没有使用super()调用父类特定方法时编译报错的问题 java程序在执行子类构造方法一般会使用super()调用特定方法,不使用时则可以调用定义的不做事且没有参数的构造方法 4.接口和抽象类的区别 接口的默认方法是public,所有方法在接口中不能有实现,而抽象类可以有非抽象方法 接口中只能有static,final变量,不能有其他变量 一个类中只能实现一个抽象类,但接口可以实现多个通过extends关键字扩展 从设计层面上说:抽象是对类的抽象,是一种模板设计;接口是对行为的抽象,是一种行为的规范 5.线程,程序,进程的概念及关系 程序: 程序是含有指令和数据的文件,被存储在磁盘或其他存储设备中,程序是静态的代码 线程: 线程与进程相似,但线程是比进程更小的执行单位,一个进程在执行的过程中可以产生多个线程. 线程又被称为轻量级进程: 多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或在各个线程之间切换时负担比进程小 线程的基本状态:

面向对象的三大特性

半世苍凉 提交于 2019-11-28 16:21:42
面向对象技术的三大特性:继承性、多态性和封装性。 继承性 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。 比如兔子和羊属于 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 继承的特性 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。 super 与 this 关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。 this关键字:指向自己的引用。 对于构造器而言,它只能够被调用,而不能被继承 子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的

Java 中的内部类

蓝咒 提交于 2019-11-28 15:44:05
(1)问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。 (2)问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下:   1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内, 不允许同一个包中的其他类访问该类   2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据   3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便 (3)问:内部类有几种呢? 答:内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 匿名内部类 一、成员内部类   内部类中最常见的就是成员内部类,也称为普通内部类。我们来看如下代码:    运行结果为: 从上面的代码中我们可以看到,成员内部类的使用方法:   1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等   2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a   3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去

Java面试经典题目合集

我的梦境 提交于 2019-11-28 15:41:14
32 1.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?   “static”关键字表明一个成员变量或者是成员方法与类相关,可以在没有所属的类的实例变量的情况下被访问。   Java中static方法不能被覆盖,因为方法覆盖是 基于运行时动态绑定的 ,而static方法是 编译时静态绑定的 。static方法跟类的任何实例都不相关,所以概念上不适用。   java中也不可以覆盖private的方法,因为private修饰的变量和方法只能在当前类中使用,如果是其他的类继承当前类是不能访问到private变量或方法的,当然也不能覆盖。 2.是否可以在static环境中访问非static变量? 因为静态的成员属于类,随着类的加载而加载到 静态方法区内存 ,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。 3.Java支持的数据类型有哪些?什么是自动拆装箱? Java语言支持的8种基本数据类型是: byte short int long float double boolean char 自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成Double,等等。反之就是自动拆箱。 Java支持的数据类型包括两种

面向对象(2)

孤街醉人 提交于 2019-11-28 15:31:43
static属性不能定义在方法里,static修饰时为静态方法或静态变量,或者说类方法和类属性,静态方法可以在非静态方法中调用,但是静态方法不能直接调用非静态方法 static修饰的变量和方法在对象还没创建的时候就存在,static不能再普通方法中,静态方法中也不能定义 代码块: /** * 在{}中的代码 * 普通代码块:定义在方法中的 * 构造代码块:定义在类中的使用{}括起来的代码块 * 每次在new对象的时候都会将构造代码块添加到构造方法里面并且处于前面的位置 * 比原先构造方法中的代码先执行,构造代码块中的代码会添加到每一个构造方法中去,如果 * 那个构造方法中有this()构造方法则不添加; * 静态代码块:静态代码块:static{}中的代码块在持续载入的时候优先执行,在对象创建之前 * 同步代码块:在多线程中使用,用来给共享空间加锁 */ 包对应到文件系统就是多级目录,静态导包,import static java.lang.Math.*; java访问权限修饰: 权限修饰符概念: private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。 default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问。

Java类和对象

烂漫一生 提交于 2019-11-28 13:41:57
了解类和对象前,简单提及面向对象程序设计。面向对象程序设计就是通过对象来进行程序设计,对象表示一个可以明确标识的实体。例如:一个人、一本书、一个学校或一台电脑等等。每个对象都有自己独特的标识、状态和行为。 对象的状态(特征或属性,即实例变量),由该对象的数据域来表示。 例如:一个人可以具有名字、年龄、身高、体重、家庭地址等等属性,这些就是“人这个对象的数据域”。 对象的行为(对象执行的动作,即功能),由方法来定义。例如:定义getName()来获取姓名, getHeight()获取身高,setAddress(String addr)修改地址。 类和对象的关系 类是一种抽象的概念集合,是最基础的组织单位,作为对象的模板、合约或蓝图。 类是对象的类型,使用一个通用类可以定义同一类型的对象,类中定义对象的数据域是什么以及方法是做什么的。 对象是类的实例,一个类可以拥有多个实例,创建实例的过程叫做实例化。实例也称为对象,两者说法一致。 构造方法 构造方法在使用new操作符创建对象时被调用,作用就是用于初始化对象数据域。 构造方法相比于普通方法比较特殊的地方: 构造方法名和所在类的类名一致;无返回值(即void也没有);只有创建对象时才会被调用。 构造方法和普通方法一样,也可以重载,根据不同的初始参数,来构造对象。   //只初始化名字和性别 public Person(String

Java 方法使用

こ雲淡風輕ζ 提交于 2019-11-28 13:36:29
那么什么是方法呢? Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 方法的优点 1. 使程序变得更简短而清晰。 2. 有利于程序维护。 3. 可以提高程序开发的效率。 4. 提高了代码的重用性。 方法的命名规则 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如: addPerson。 2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是: test<MethodUnderTest>_<state>,例如 testPop_emptyStack。 方法的定义 一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型 : 方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字 void 。 方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型:

Java IO

老子叫甜甜 提交于 2019-11-28 13:34:33
IO类 IO本身就是输入输出的意思,IO类就是为了与磁盘进行IO相关操作的工具、桥梁; IO类基本可以分成 字节流 和 字符流 ; 而既然是IO,那不管是哪个流都是分为输入和输出两大块 字节流 InputStream(抽象) (字节输入流) InputStream是所有字节输入流的抽象基类,提供字节输入的通用方法 基本方法: read() //从文件中读取数据的下一字节 read(byte[]) //从文件中读取一个数组量的字节 read(byte[], int, int) //从文件中读取限定位置数量的字节 注:当读取不到字节时会返回 -1 FileInputStream 该流是父类提供用于实例化的读取文件的输入流,能从指定文件中读取字节,从而读取文件内容 构造方法有两个: 需要实例化一个File文件对象 FileInputStream( File ) 不用实例化File对象 FileInputStream( String ) 使用方式 一个一个字节读取(效率慢) public static void main(String[] args) throws IOException { //创建一个字节输入流对象,必须明确数据源 File file = new File("c:\\file.txt"); FileInputStream fis = new

Java基本语法

我与影子孤独终老i 提交于 2019-11-28 12:46:54
原文: http://blog.gqylpy.com/gqy/456 置顶:来自一名75后老程序员的武林秘籍——必读 (博主推荐) 来,先呈上武林秘籍链接: http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我会画原理图,会画 PCB,会模拟,会数字!玩过 PLC,玩过单片机,会用汇编,会用 C!玩过 ARM,比如 PLC,STM32,和时下正在起飞的 NXP RT1052!搞过 DSP,比如 TMS320F28335!搞过 FPGA,不管 Xilinx 还是 Altera,也不管是 Verilog 还是 VHDL,或者直接画数字电路图!我懂嵌入式系统,比如 uCOS 和 Linux!我懂开源的硬件,比如 Arduino 和树莓派!我也搞软件,学了一堆上位机的语言C#,JAVA,Python,Kotlin,Swift!会写爬虫工具,又自学写APP,不管Android 还是 IOS! 可是这一切有什么用呢?土鸡瓦狗!不值一提!干技术的永远就是最苦逼的那个人! 我相信看到这里的你,应该是个 IT