Java面向对象编程 -3.2
使用this调用本类方法
除了调用属性之外,this也可以实现方法的调用,但是对于方法的调用就必须考虑构造与普通方法
- 构造方法调用(this()):使用关键字new实例化对象的时候才会调用构造方法;
- 普通方法调用(this.方法名称()):实例化对象产生后就可以调用普通方法。
普通的方法调用:
package study;
class Person{
private int age;
private String name;
public Person(int age ,String name) {
//this.age = age;
//this.name = name;
this.setAge(age);
this.setName(name);//加this与不加 都表示本类方法
}
public void intorduce() {
System.out.println("age= "+this.age+" name= "+this.name);
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
}
public class xxx {
public static void main(String[] args) {
new Person(13,"sss").intorduce();
}
}
构造方法的调用
对于构造方法的调用,肯定是要放在构造函数中执行,现在假设类中一共定义有三个构造方法,但是要求不管调用哪个构造方法,都执行一行输出语句
传统实现:
package study;
class Person{
private int age;
private String name;
public Person() {
System.out.println("一个新的Person类对象实例化。");
}
public Person(int age){
System.out.println("一个新的Person类对象实例化。");
this.age = age;
}
public Person(int age ,String name) {
System.out.println("一个新的Person类对象实例化。");
this.age = age;
this.name = name;
}
public void intorduce() {
System.out.println("age= "+this.age+" name= "+this.name);
}
}
public class xxx {
public static void main(String[] args) {
new Person(13,"sss").intorduce();
}
}
>>>一个新的Person类对象实例化。
>>>age= 13 name= sss
如果要想评价一个代码的好坏:
- 代码结构可以重用,提供的是一个中间独立的支持;
- 我们的目标:没有重复
利用this()构造调用优化
class Person{
private int age;
private String name;
public Person() {
System.out.println("一个新的Person类对象实例化。");
}
public Person(int age){
this();//调用无参构造方法
this.age = age;
}
public Person(int age ,String name) {
this();//调用单参构造方法
this.name = name;
}
public void intorduce() {
System.out.println("age= "+this.age+" name= "+this.name);
}
}
public class xxx {
public static void main(String[] args) {
new Person(13,"sss").intorduce();
}
}
>>>一个新的Person类对象实例化。
>>>age= 0 name= sss
对于本类构造方法的互相调用需要注意以下几点重要问题:
- 构造方法必须在实例化新对象的时候调用,所以“this()”的语句只允许放在构造方法的首行;
- 构造方法互相调用时请保留有程序的出口,别形成死循环;
四参、三参 两参 无参构造函数
public class Emp {
private long empo;//员工编号
private String ename;//员工名字
private String dept;//部门名称
private Double salary;//基本工资
public Emp() {
this.empo =1000l;
this.ename = "无名氏";
}
public Emp(long empo) {
this.empo = empo;
this.ename = "新员工";
this.dept = "未定";
this.salary = 0.0d;
}
public Emp(long empo,String ename,String dept){
this.empo = empo;
this.ename = ename;
this.dept = dept;
salary = 2500.0d;
}
public Emp(long empo,String ename,String dept,double salary) {
this.empo = empo;
this.ename =ename;
this.dept = dept;
this.salary = salary;
}
public String tell() {
return "empo:"+this.empo+" ename:"+this.ename+" dept:"+this.dept+" salary:"+this.salary;
}
public static void main(String[] args) {
Emp emp = new Emp(130l);
System.out.println(emp.tell());
}
}
优化 得带赋值 四参构造足以撑起所有赋值
public class Emp {
private long empo;//员工编号
private String ename;//员工名字
private String dept;//部门名称
private Double salary;//基本工资
public Emp() {
this(1000l,"无名氏",null,0.0d);
// this.empo =1000l;
// this.ename = "无名氏";
}
public Emp(long empo) {
this(empo,"新员工","未定",0.0d);
// this.empo = empo;
// this.ename = "新员工";
// this.dept = "未定";
// this.salary = 0.0d;
}
public Emp(long empo,String ename,String dept){
this(empo,ename,dept,2500.0d);
// this.empo = empo;
// this.ename = ename;
// this.dept = dept;
// salary = 2500.0d;
}
public Emp(long empo,String ename,String dept,double salary) {
this.empo = empo;
this.ename =ename;
this.dept = dept;
this.salary = salary;
}
public String tell() {
return "empo:"+this.empo+" ename:"+this.ename+" dept:"+this.dept+" salary:"+this.salary;
}
public static void main(String[] args) {
Emp emp = new Emp(130l);
System.out.println(emp.tell());
}
}
Java面向对象编程 -3.2的更多相关文章
- Java面向对象编程基础
一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...
- java 面向对象编程。。。。
经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...
- 《Java面向对象编程》
<Java面向对象编程> 第11章 对象的生命周期 11.1 创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...
- JAVA面向对象编程课程设计——网络版单机斗地主
一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...
- JAVA面向对象编程课程设计——web版斗地主
一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...
- java面向对象编程知识点总结
一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- JAVA学习(五):Java面向对象编程基础
Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...
- (一)如何理解java面向对象编程
哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...
- java面向对象编程--第九章 多态和抽象
9.1多态 在生物学中,是指一个生物或物种可以有多种不同的形式或阶段: 在OOP中,多态是指一个对象有多种形式的能力. 多态可以说是面向对象编程的精髓所在.java中之所以引入多态的概念,原因之一是它 ...
随机推荐
- 每天进步一点点------Allegro 铺铜详解
铺铜在设计PCB板时很重要,为了加深理解,笔者写下这篇学习的过程. 首先要理解什么是正片和负片,结合网上的资料来理解一下: 正片实际就是能在底片上能看到的就是存在的 负片实际上就是在底片看到的就是不存 ...
- SpringBoot集成mybatis以及自动化测试代码实现
Mybatis和logback的应用配置 1.在module的pom.xml文件中,加载springboot和swagger.lombok.fastjson.mysql.mybatis包 2.在res ...
- css动画效果之transition(动画过渡效果属性)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MyBatis(8)——联表多对一的处理
xml说明: <!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性--> <resultMap id="唯一的标识" ...
- 第八届蓝桥杯C++B组 日期问题
标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...
- Linux Centos7文件系统
上期教大家创建分区,刚分区完成后没有文件系统,分区不能使用.本期教大家创建文件系统,(文件系统:操作系统通过文件系统管理文件及数据,创建文件系统的过程俗称格式化.)没有文件系统的设备称之为裸(raw) ...
- [Excel] 一些实用的函数式子
这次是用php写了一个系统 收集信息,需要身份证号作为验证,但是为了信息安全 只能在数据库里面放身份证后六位.也就是说.最终导出的Excel也是只有身份证的后六位.,, 后来我发现我本地保存的完整身份 ...
- 前端——语言——Core JS——《The good part》读书笔记——第五章节(Inheritance)
本章题目是继承,实质上介绍JS如何实现面向对象的三大特性,封装,继承,多态.本章的最后一个小节介绍事件. 与Java语言对比,虽然名称同样称为类,对象,但是显然它们的含义存在一些细微的差异,而且实现三 ...
- JavaScript 推箱子游戏
推箱子游戏的 逻辑非常简单,但是如果不动手的话,还是不太清楚.我在这里讲一下自己的思路. 制作推箱子,首先要有自己的设计素材.如下我也是网上找的素材 第二步,理清游戏的规则. 游戏规则: 1.小人将箱 ...
- Centos6.10-FastDFS-存储器Http配置
Centos610系列配置 1.准备配置 cd /opt/download/fastdfs-master/confcp http.conf /etc/fdfs/http.confcp mime.typ ...