构造方法

面向对象的三大特性

人盡茶涼 提交于 2020-03-01 06:00:22
学习 Java 的小伙伴都知道,Java 是面向对象的,谈起面向对象,当然离不开 面向对象的三大特性:封装、继承、多态 封装 很好理解,比如我们平时去餐馆吃饭的时候,我们是看不到厨师的后台操作的,点完饭后,厨师根据我们的需求,将菜肴做好,但是我们是看不到做饭的过程的,这就是封装,把厨师做饭的过程封装起来,不对外显现,在 Java 中,我们也是这样,有时候不需要向用户展现某一部分我们是如何实现的,就可以把这部分封装起来,这样,类的调用者也不需要具体了解某个实现过程,减轻了类的调用者的负担,而实现封装,我们就可以用到之前提到过的 private 关键字 继承 现实生活中,我们经常听到儿子继承父亲的财产,对应到 Java 中也是一样的,子类(派生类)继承父类(基类、超类),子类拥有父类的属性和父类的方法,和财产继承一样,而继承我们是有语法的, 使用到了 extends 关键字 class 子类 extends 父类 { } extends 关键字 Java中使用extends关键字实现类的继承机制 通过继承子类自动拥有了基类(superclass)的所有成员(成员变量和成员方法) Java只支持单继承 一个子类只能有一个基类,一个基类可以派生出多个子类 继承有以下需要注意的: 在 Java 中,继承是通过 extends 关键字来实现的,不可以使用 protected 和 private

C++子类显示调用父类的构造函数

那年仲夏 提交于 2020-03-01 04:10:01
C++子类显示调用父类的构造函数 加入有父类是这样定义的: class CA { public: CA() { cout << "using ca's constractor/n"; } CA(int k) { cout << "using ca's 2nd constractor, k is " << k << endl; m = k; }; virtual ~CA() { cout << "using ca's disconstractor/n"; } void output() { cout << "the m is " << m << endl; } private: int m; }; 注意A类里面有一个私有成员m. 假设有一个子类是这样定义的: class CB : public CA { public: CB(int k) { m = k; } }; 显然是错误的,B类不能够直接访问A类的成员m 这样定义也是错误的: class CB : public CA { public: CB(int k) { __super::CA((int)k); } }; 这样实际上是在CB(int k)中构造了一个CA类的临时变量实例,函数执行完之后就没有了。如果有: CB b(2); 执行的结果是: using ca's constractor using ca's 2nd

stringbuilder

不问归期 提交于 2020-03-01 00:28:53
StringBuilder 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的) StringBuilder 的构造方法: 构造方法 说明 StringBuilder() 构造一个其中不带字符的 StringBuilder,其初始容量为 16 个字符 StringBuilder(CharSequence seq) 构造一个 StringBuilder,它包含与指定的 CharSequence 相同的字符 StringBuilder(int capacity) 构造一个具有指定初始容量的 StringBuilder StringBuilder(String str) 并将其内容初始化为指定的字符串内容 StringBuilder 类的常用方法: 方法 返回值 功能描述 insert(int offsetm,Object obj) StringBuilder 在 offsetm 的位置插入字符串 obj append(Object obj) StringBuilder 在字符串末尾追加字符串 obj length() int 确定 StringBuilder 对象的长度 setCharAt(int index,char ch) void 使用 ch 指定的新值设置 index

Java构造方法总结

那年仲夏 提交于 2020-02-29 22:28:54
构造方法结构 方法名为类名,结构为: 类名(【参数列表】){ } 使用new来调用,样例代码如下(不包含构造方法) public class UserInfo { public static void main ( String [ ] args ) { UserInfo Lin = new UserInfo (); } } 构造方法特点 a.构造方法不可以有返回值部分,且void也不可以。 b.一个类中默认有无参构造方法,当定义了一个有参构造方法时,则默认无参构造方法隐藏。 c.构造方法不允许使用final,static等修饰。若出现final,static等,则会出现代码编译错误,无法运行。 d.一个类中根据需要可定义多个构造方法,这也是重载的体现。 e.类中的构造方法可以相互调用,即this(实参列表);但必须置于构造方法有效代码的第一行,同时也就规定此种方法只可调用一次方法。 详细代码如下: public class UserInfo { int age ; String name ; String moble ; String address; UserInfo ( int a , String n , String m , String add ) { this ( 18 , "lindazhi" ) ; age = a ; name = n ; moble = m ;

Java--代码执行顺序(静态初始化块,初始化块,构造函数)

只谈情不闲聊 提交于 2020-02-29 22:14:45
先上结论 执行顺序 :先执行静态初始化块,然后时初始化块,最后是构造函数 书写格式 : 注意事项: 1. 静态初始化块    静态初始化块只 在类首次加载时执行一次 ,同时静态初始化块 只能给静态变量赋值 ,不能给普通成员变量赋值。 静态初始化块不需要在main方法中调用,即使没有main方法它也会执行 2. (非静态)初始化块    (非静态)初始化块 在每次生成实例对象时都执行一次 ,可以给任意变量赋值。 如果对类没有进行实例化,初始化块不会执行,但是静态初始化块会执行。 3. 构造方法    构造方法 在每次生成实例对象时都执行一次 通过反编译可以看到,构造代码块中的代码也是在构造方法中执行的。在 编译时 的编译器看来 会默认将构造代码块中的代码移动到构造方法中,并且移动到构造方法内容的前面 。 另外需要注意的一点是在执行子类的构造方法之前会先执行父类的默认构造函数即无参构造函数 来源: oschina 链接: https://my.oschina.net/fairy1674/blog/3179652

java学习笔记(五)

送分小仙女□ 提交于 2020-02-29 13:47:20
Java 方法 方法的定义 一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符 :修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。 方法名 :是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型 :参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 方法体 :方法体包含具体的语句,定义该方法的功能。 如: public static int age(int birthday){...} 方法的重载 /** 返回两个整型变量数据的较大值 */ public static int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; }

2020-02-29

流过昼夜 提交于 2020-02-29 13:44:48
JAVA 类和对象 构造方法 定义了一个学生的类 Student,包括成员变量“学号” 、 “班号” 、 “姓名” 、 “性别” 、 “年龄” , 成员方法: “获得学号” 、 “获得班号” 、 “获得性别” 、 “获得姓名” 、 “获得年龄” 。 . 请为 Student类定义构造函数初始化所有的成员变量。增加一个方法 public String toString() 把 Student类对象的所有信息组合成一个字符串。 代码 来源: CSDN 作者: xiaobaixl 链接: https://blog.csdn.net/xiaobaixl/article/details/104571789

java的构造函数和构造代码块

南笙酒味 提交于 2020-02-29 13:31:56
一:构造方法 Java当中有两种函数:构造函数和普通函数(实例函数)。 构造函数的特点: 构造函数的函数名字与类名相同 构造函数不可以定义返回值 构造函数不可以写return语句 每个类默认有一个无参数构造函数 构造函数可以重载但不能重写 构造函数的作用: 给对象进行初始化 注意 : 虽然每个类都有一个默认的不带参数的构造方法,但是我们重写了这个类的构造方法之后,而又没有不带参数的构造方法, 此时程序就会报错,不能通过编译。 如下:不带参数的Person()构造方法被注释掉之后就会报错。 public class Person { private String name;//无参构造方法被注释掉之后会报错。 /* Person(){ System.out.println("I'm a Person constructor."); } */ Person(String name){ System.out.println("I'm a overloaded constructor."); } } class PersonTest{ public static void main(String[] args) { Person person=new Person();//这句会报错,因为找不到不带参数的构造方法 } } 二:构造代码块 作用:给对象初始化用 对象已建立就运行

国际化程序实现原理

笑着哭i 提交于 2020-02-29 12:04:37
文章目录 国际化问题简介 Locale 类 Locale 类的构造方法: 举例:(实例化 Locale 类对象) 读取资源文件:ResourceBundle 举例:使用 ResourceBundle 类读取内容 实现国家化程序 举例:(代码实现) 消息格式化 举例:(修改资源文件) 举例:(格式化文本实现国际化) 所谓的国际化的程序指的是同一个程序代码可以根据不同的国家实现不同的语言描述,但是程序处理的核心业务是相同的 国际化问题简介 现在假设有一款世界都认可的企业管理平台,那么这个企业的老板决定将这个产品呢推广到全世界各个大型的上市公司,于是这些公司可能来自于:中国、美国、德国等等等等,那么在这样的情况下,首先要考虑的问题是什么呢? 通过分析之后可以发现,如果要想实现国际化的程序开发,那么要解决的问题就在于以下两点: 如何可以定义保存文字的文件信息 如何可以根据不同的区域语言的编码读取指定的资源信息 Locale 类 通过分析可以发现,如果要想实现国际化,那么首先需要解决的就是不同国家用户的区域和语言编码的问题,而在 java.util 包中提供有一个专门描述区域和语言编码的类: Locale,而后可以主要可以使用 Locale 类中的两个构造方法进行实例化 Locale 类的构造方法: 构造方法:public Locale(String language) 构造方法

14--swift之派生类构造方法

拟墨画扇 提交于 2020-02-29 02:33:24
1. 指定构造和便利构造方法解析 这些是类类型的概念,在值类型里没有 class Ab { var a: Int var b: Int // 以 init 开头就是指定构造 init(a: Int,b: Int){ self.a = a self.b = b// 注意:类的指定构造方法里不能像值类型那样调用其他构造器 print("Class ab init") } // 类似值类型的构造方法,加上关键字 convenience ,搭配 self.init 就是便利构造方法,他通过调用其他的构造方法来实现初始化,当然既可以通过指定构造方法也可以是其他便利构造方法 convenience init(a: Int){ // self.a = a // b = 0 self.init(a: a,b: 0) } } 2. 派生类的构造方法 class Ab { var a: Int var b: Int // 以 init 开头就是指定构造 init(a: Int,b: Int){ self.a = a self.b = b// 注意:类的指定构造方法里不能像值类型那样调用其他构造器 print("Class ab init") } // 类似值类型的构造方法,加上关键字 convenience ,搭配 self.init 就是便利构造方法,他通过调用其他的构造方法来实现初始化