构造方法

this和super关键字的常见用法

匿名 (未验证) 提交于 2019-12-02 23:40:02
super和this的含义 super this : 代表当前对象的引用(谁调用就代表谁)。 super关键字的三种用法: 格式 :super.成员方法名() 格式 :super.成员变量 在子类的构造方法中,访问父类的构造方法 :super(参数列表) this关键字的三种用法: 格式 :this.成员方法名() 格式 :this.成员变量 在子类的构造方法中,访问本类的另外一个构造方法 :this(参数列表) 注意事项: super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。 子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super()。

计算两个点之间的距离

匿名 (未验证) 提交于 2019-12-02 23:38:02
编写一个表示二维平面上的点的类MyPoint,满足以下条件: 1、定义private的成员变量x和y,表示点的x和y坐标,类型为double 2、定义两个MyPoint的构造方法,一个构造方法不带参数,而且x和y的初始值为0,另一个构造方法有两个参数,参数名为x和y,类型为double,用这两个参数分别作为初始x和y坐标 3、定义一个getD方法,有一个类型为MyPoint的对象参数,功能为返回当前对象和参数对象这两个坐标点的距离,返回值为double类型 4、编写测试的main方法,调用getD计算两个点之间的距离 输入: 输入2行数据, 总共4个有理数。每2个数据一组,表示一个点的x和y坐标,每行的2个数据用空格隔开。例如: 200.1 200.2 200.3 200.4 输出: 输出两个点之间的距离。例如: 0.28284271247464315 package chapter02; import java.util.Scanner; class MyPoint{ private double x; private double y; MyPoint(){ this.x = 0; this.y = 0; } MyPoint(double x, double y){ this.x = x; this.y = y; } public double getD(MyPoint

typescript 入门教程二

不想你离开。 提交于 2019-12-02 23:33:51
ts中面向对象成员修饰符:public , private , protexted (ts官方网站: ts ) 在ts中,默认的成员修饰符就是public public:是表示是公开的,在任何地方,都可以调用,不管在类中,还是子类中,还是对象中均是可以直接调用 private:是表示私有的,只能在类中访问,不能在子类或者对象中访问,要调用私有的属性或者方法,可以通过在类中设置公有的方法访问私有的成员,对外暴露公有的方法进行访问, 子类继承的时候,也可以继承父类私有的属性和方法,但是也要通过在子类继承过来的公有的方法进行访问私有的属性 protected: 只能在类中或者子类中进行访问,但是不能在自身类或者子类对象中访问 总的老说,权限范围:public>protected>private 注意: 1.如果当前类被申明为private或者protected,当前类不能new ( );当父类的构造方法被申明为protected,子类重写父类的构造方法之后,子类可以new;如果父类构造方法申明私有,子类不能new和继承。 2.当某个类不想被实例化,只是想子类继承后实例化,可以将该类的构造方法申明为protected,但是注意这时候需要子类通过super继承父类的构造方法才行 3.当一个类既不想自身实例化,也不想子类实例化,可以将构造方法申明为private 4

反射(2019年10月28日)

早过忘川 提交于 2019-12-02 23:23:54
目前创建对象的三种方式:1.通过构造方法,用关键字new来创建对象 2.用clone来浅拷贝一个对象 3.利用反射机制,反射一个对象 反射方式创建类 ; 1 .利用已经存在的对象来反射新的对象 1 Student s = new Student(); 2 Class sClazz = s.getClass(); 2 .利用已知类名来创建对象 1 Class clazz = Student. class ; 3 .利用准确的类名来创建对象 1 Class clazz = Class.forName("com.bli.zyx.Student" ); 2 Student s= (Student)clazz.newInstance(); //newInstance会去找无参的构造方法执行,创建对象 如果对象中没有无参的构造方法,那么我们需要创建一个构造器来创建有参的构造方法 1 Constructor <Student> c=clazz.getConstructor(String.class,String.class);//利用构造器,后面的参数是构造函数中的形式参数类型 通过构造器的方式可以匹配不同的参数列表的构造方法       Constructor<Student> c = clazz.getConstructor(String.class,int.class);      

Java 语法学习笔记(四)

六眼飞鱼酱① 提交于 2019-12-02 23:00:02
Java 语法学习笔记(四) 文章目录 Java 语法学习笔记(四) 参考教程 介绍 Java 面向对象 类的定义 创建对象 对象的销毁 访问控制修饰符 static 修饰符 Java 方法的可变参数 Java 析构方法 Java 包机制 包的作用 包声明 导入包 类的继承 Java 的重写与重载 Java 多态 抽象类 接口 抽象类和接口的区别 内部类 匿名类 总结 --- 思维导图 参考教程 菜鸟教程 — Java 教程 IBM — Java 编程简介,第 2 部分 C语言中文网 — Java类和对象 介绍 Java 许多语法跟 C/C++,比较相似。本人学习过 C/C++/Python , 因此仅记录 Java 语法特有的部分。 Java 面向对象 类的定义 可以在声明成员变量的同时对其进行初始化,如果声明成员变量时没有对其初始化,则系统会使用默认值初始化成员变量 this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用 创建对象 显示创建对象 new 关键字 隐式创建对象 字符串的操作 对象的销毁 由垃圾回收(Garbage Collection, GC) 机制自动完成 访问控制修饰符 private 、 friendly 、 protected 、 public 默认为 friend

Java 语法学习笔记(三)

喜欢而已 提交于 2019-12-02 22:57:22
Java 语法学习笔记(三) 标签(空格分隔): Java 文章目录 Java 语法学习笔记(三) 参考教程 Java 异常 异常的分类 异常的产生和处理 异常的使用原则 Java 自定义异常 Java 输入输出流 分类 Java输入输出流 Java 系统流 File 类 动态读写文件内容 字节流的读写 字节输入流 字节输出流 字符流的读写 字符输入流 字符输出流 总结 --- 思维导图 参考教程 菜鸟教程 — Java 教程 IBM — Java 编程简介,第 2 部分 C语言中文网 — Java异常处理 Java 异常 异常的分类 Throwable 类是所有异常和错误的超类,下面有 Error 和 Exception 两个子类分别表示错误和异常 检查性异常 程序员无法预见的异常 从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过 运行时异常 程序员可预见的异常,编译时可忽略 属于不检查异常,程序中可以选择捕获处理,也可以不处理 错误(Error) 脱离程序员控制的错误 Error 类型通常是灾难性的致命错误,不是程序可以控制的 异常的产生和处理 Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。 把生成异常对象

041_面向对象_14_继承_super

匿名 (未验证) 提交于 2019-12-02 22:56:40
一、super()方法   super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。   除了Object类之外其他所有类的构造方法第一句总是super(…) 二、super()的应用场景(重点)   a)在普通方法中(非构造器)中的任何位置可以通过super(...)调用直接父类的构造方法、调完之后会在内存中生成父类的对象。     b)在任何类的构造方法中,若是构造方法的 第一行代码 没有显式的调用super(...);那么Java默认都会调用super(); 所以你这里的super(); 加不加都无所谓。 super()必须位于构造方法第一行 。   c)我们知道构造方法可以重载,所以一个构造方法的方法名对应N个重载的构造方法,调用时通过super(参数列表)来确定调用的是那一个构造方法。 三、演示示例   package edu.aeon.test; /** * [说明]:动物类 * @author aeon * */ public class Animal /* extends Object */ { String eye; public void run() { System.out.println("跑跑!"); } public void eat() { System.out.println("吃吃!"); } public void

Spring常用的三种注入方式

匿名 (未验证) 提交于 2019-12-02 22:56:40
Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。 先简单看一下测试项目的结构,用maven构建的,四个包: entity:存储实体,里面只有一个User类 dao:数据访问,一个接口,两个实现类 service:服务层,一个接口,一个实现类,实现类依赖于IUserDao 在spring的配置文件中注册UserService,将UserDaoJdbc通过constructor-arg标签注入到UserService的 某个 有参数的构造方法 如果只有一个有参数的构造方法并且参数类型与注入的bean的类型匹配,那就会注入到该构造方法中。 测试打印结果:jdbc-登录成功 注:模拟用户登录的loginUser方法其实只是打印了一条输出语句,jdbc实现的类输出的是:jdbc-登录成功,mybatis实现的类输出的是:mybatis-登录成功。 问题一:如果有多个有参数的构造方法并且每个构造方法的参数列表里面都有要注入的属性,那userDaoJdbc会注入到哪里呢? 问题二:如果只有一个构造方法,但是有两个参数,一个是待注入的参数,另一个是其他类型的参数,那么这次注入可以成功吗? 结果:会注入到只有一个参数的构造方法中,并且经过测试注入哪一个构造方法与构造方法的顺序无关 结果:失败了,即使在costract

Python中类方法、__new__方法和__init__方法解析

匿名 (未验证) 提交于 2019-12-02 22:51:30
在编程语言中创建一个类,有构造方法这样的一个术语。而在Python中,通常大家都认为__init__是构造方法,其实并不完全等同。在构建类中,有一个特殊的方法__new__,这个才能等同为构造方法。 __new__是一个类方法,我们在定义一个类方法时需要在函数前打上@classmethod装饰器,而__new__不需要,因为它经过特殊处理。为了理解__new__方法,我们先来看看类方法是什么。 class MyClass: @classmethod def test(cls): print(cls.__name__) MyClass.test() #输出 MyClass 在MyClass类中,test方法就是类方法,它传入第一个参数为cls,其实就是MyClass类,打印cls.__name__可以看到结果。类方法可以直接 类名.方法名() 调用。通常类方法是 备选构造方法 。 >>> from datetime import datetime >>> datetime.fromtimestamp(324234) datetime.datetime(1970, 1, 5, 2, 3, 54) 如上所示,内置的datetime包中的fromtimestamp就是类方法,可以从多种方式构造出datetime对象。 def __new__(cls, a): return super().