构造方法

设计模式(一)

女生的网名这么多〃 提交于 2019-12-02 15:19:54
1,类之间的关系 依赖(1类方法调用2类,2类作为参数) 关联(2类为1类中属性) 组合(2类作为1类属性且在构造方法中作为组成部分,不可分离存在) 聚合(2类作为1类属性且在构造方法中作为组成部分,整体与部分的关系,但可分离存在) 泛化(继承) 接口与实现() 2.面向对象设计原则 设计原则名称 设计原则简介 重要性 单一职责原则 (Single Responsibility Principle, SRP) 类的职责要单一,不能将太多的职责放在一个类中 ★★★★☆ 开闭原则 (Open-Closed Principle, OCP) 软件实体对扩展是开放的,但对修改是关闭的,即在不修改一 个软件实体的基础上去扩展其功能 ★★★★★ 里氏代换原则 (Liskov Substitution Principle, LSP) 在软件系统中,一个可以接受基类对象的地方必然可以接受一 个子类对象 ★★★★☆ 依赖倒转原则 (Dependency Inversion Principle, DIP) 要针对抽象层编程,而不要针对具体类编程 ★★★★★ 接口隔离原则 (Interface Segregation Principle, ISP) 使用多个专门的接口来取代一个统一的接口 ★★☆☆☆ 合成复用原则 (Composite Reuse Principle, CRP)

Java类初始化顺序说明

倖福魔咒の 提交于 2019-12-02 14:52:06
一个类会有如下几个内容,类在初始化时他们是有顺序的 静态属性:static 开头定义的属性 静态方法块: static {} 圈起来的方法块 静态方法:static 修饰的方法(被调用才生效) 普通属性: 未带static定义的属性 普通方法块: {} 圈起来的方法块 普通方法: 普通方法(被调用才生效) 构造方法: 类名相同的方法 1.普通类 public class LifeCycle { // 静态属性 private static String staticField = getStaticField(); // 静态方法块 static { System.out.println(staticField); System.out.println("静态方法块"); } // 静态方法 public static String getStaticField() { System.out.println("静态方法"); return "静态属性"; } // 普通属性 private String field = getField(); // 普通方法块 { System.out.println(field); System.out.println("普通方法块"); } // 普通方法 public static String getField() { System.out

构造方法详解。

我们两清 提交于 2019-12-02 14:36:13
重载构造方法 、默认构造方法、子类调用父类的构造方法、构造方法的作用域、构造方法的访问级别 在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。构造方法必须满足以下语法规则: (1) 方法名必须与类名相同。 (2)不要声明返回类型。 (3)不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承,所以用final和 abstract修饰没有意义。构造方法用于初始化一个新建的对象,所以用static修饰没有意义。多个线程不会同时创建内存地址相同的同一个对象,因此用synchronized修饰没有必要。此外,Java语言不支持native类型的构造方法。 在以下Sample类中,具有int返回类型的Sample(int x)方法只是个普通的实例方法,不能作为构造方法: public class Sample { private int x; public Sample() { // 不带参数的构造方法 this(1); } public Sample(int x) { //带参数的构造方法 this.x=x; } public int Sample(int x) { //不是构造方法 return x++; } } 以上例子尽管能编译通过

this关键字。

馋奶兔 提交于 2019-12-02 14:35:26
一、this关键字主要有三个应用: (1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。 Public Class Student { String name; //定义一个成员变量name private void SetName(String name) { //定义一个参数(局部变量)name this.name=name; //将局部变量的值传递给成员变量 } } 应用一:引用成员变量 如上面这段代码中,有一个成员变量name,同时在方法中有一个形式参数,名字也是name,然后在方法中将形式参数name的值传递给成员变量name,虽然我们可以看明白这个代码的含义,但是作为Java编译器它是怎么判断的呢?到底是将形式参数name的值传递给成员变量name,还是反过来将成员变量name的值传递给形式参数name呢?也就是说,两个变量名字如果相同的话,那么Java如何判断使用哪个变量?此时this这个关键字就起到作用了。this这个关键字其代表的就是对象中的成员变量或者方法。也就是说,如果在某个变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。为此在上面这个代码中,this.name代表的就是对象中的成员变量

面向对象--构造方法知识点。

让人想犯罪 __ 提交于 2019-12-02 14:31:07
构造方法的名字和类名保持一致,构造方法没有返回值。 一个类中如果没有构造方法,在编译的时候会自动给出一个默认无参的构造方法,如果类中定义了构造方法,默认的构造方法就不存在了,此时定义了几个就有几个。 语法1:访问修饰符 类名(){}; 语法2:访问修饰符 类名(参数1,参数2,...){ 方法体 } 来源: https://www.cnblogs.com/wangffeng293/p/11750426.html

Java学习路线-2:面向对象-类

时光总嘲笑我的痴心妄想 提交于 2019-12-02 12:48:56
2、面向对象简介 Java语言最大特点:面向对象编程设计 面向过程:C语言,面对一个问题的解决方案 面向对象:C++/Java,模块化设计,进行重用配置,考虑标准 1、面向对象三个主要特征: 封装性:内部操作对外部不可见 继承性:已有结构的基础上继续进行功能扩充 多态性:是在继承性的基础上扩充而来的概念,指类型的转换处理 2、面向对象开发三个步骤: OOA:面向对象分析 OOD:面向对象设计 OOP:面向对象编程 3、类与对象 类:对某一类事物共性的抽象 对象:描述一个具体的产物 类是一个模型,对象是类可以使用的实例 先有类再有对象 类的组成: 成员属性Field 简称属性 操作方法Method 对象的行为 4、类与对象的定义及使用 Java中,类是一个独立的结构体 属性就是变量 方法就是可以重复执行的代码 // 定义类 class Person { // 定义属性 String name ; // 引用数据类型 默认值 null int age ; // 基础数据类型 默认值 0 // 定义方法 public void tell ( ) { System . out . println ( "姓名:" + this . name + " 年龄:" + this . age ) ; } public static void main ( String [ ] args ) {

JavaSE学习08(抽象类和接口)

只愿长相守 提交于 2019-12-02 12:48:12
抽象类 1.抽象类描述 在java中,一个没有方法体的方法应该定义为抽象方法,包含该方法的类必须定义为抽象类。 2.抽象类的特点 抽象类和抽象方法必须用abstract关键字修饰。 public abstract class 类名 {} public abstract void eat(){}; 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。 抽象类不能示例化 抽象类要参照多态的方式,通过子类对象示例化,这叫抽象类多态。 抽象类的子类 要么重写抽象类中的所有抽象方法 要么子类是抽象类。 3.抽象类的成员特点 成员变量: 可以是变量也可以是常量 构造方法: 有构造方法,但是不能示例化,主要用于子类访问父类数据的初始化。 成员方法: 可以有抽象方法,限定子类必须完成某些动作,也可以有非抽象方法,提高代码复用性。 接口 1.接口概述 接口就是一种公共的规范标准,只要符合规范标准,大家都可以使用。 Java中的接口主要体现在 对行为的抽象 2.接口的特点 接口用关键字interface 修饰 public interface 接口名{} 类实现接口用implements表示, public class 类名implements 接口名{} 接口不能示例化 接口可以参照多态的方式,通过实现类对象实力化,这叫接口多态。 多态的形式: 具体类多态(不怎么使用)、抽象类多态、接口多态。

1021课堂内容

北慕城南 提交于 2019-12-02 11:39:06
一,继承 动手实验_1: 题目:运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! TestInherits.java: class Grandparent { public Grandparent(){ System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:" + string); } } class Parent2 extends Grandparent{ public Parent2(){ super("Hello.Grandparent."); System.out.println("Parent Created"); // super("Hello.Grandparent."); } } class Child2 extends Parent2 { public Child2() { System.out.println("Child Created"); } } public class

Java 变量类型

无人久伴 提交于 2019-12-02 11:11:33
Java 变量类型 在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; 格式说明:type为Java数据类型;identifier是变量名;可以使用逗号隔开来声明多个同类型变量。 Java语言支持的变量类型有: 类变量:独立于方法之外的变量,用 static 修饰 实例变量:独立于方法之外的变量,不过没有 static 修饰 局部变量:类的方法中的变量 Java 局部变量 局部变量声明在方法、构造方法或者语句块中 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁 访问修饰符不能用于局部变量 局部变量只在声明它的方法、构造方法或者语句块中可见 局部变量是在栈上分配的 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用 实例变量 实例变量声明在一个类中,但在方法、构造方法和语句块之外 当一个对象被实例化之后,每个实例变量的值就跟着确定 实例变量在对象创建的时候创建,在对象被销毁的时候销毁 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息 实例变量可以声明在使用前或者使用后 访问修饰符可以修饰实例变量; 实例变量对于类中的方法、构造方法或者语句块是可见的

自定义异常类

巧了我就是萌 提交于 2019-12-02 10:43:43
package com.learn.demo04.MyException; /* 自定义异常类: java提供的异常类,不够我们使用,需要自己定义一些异常类 格式: public class XXXExcepiton extends Exception | RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 } 注意: 1.自定义异常类一般都是以Exception结尾,说明该类是一个异常类 2.自定义异常类,必须的继承Exception或者RuntimeException 继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try...catch 继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理) */ public class RegisterException extends /*Exception*/ RuntimeException{ //添加一个空参数的构造方法 public RegisterException(){ super(); } /* 添加一个带异常信息的构造方法 查看源码发现,所有的异常类都会有一个带异常信息的构造方法, 方法内部会调用父类带异常信息的构造方法,