JAVA基础学习-复习day11_是老哥吧的博客-程序员秘密

技术标签: 笔记  java  封装  

构造器、this 关键字使用、MVC设计模式

/*构造器

  • 类的结构之三:构造器(前面两个属性,方法)
  • construct
  • 一、构造器使用
  • (创建类,创建方法,创建对象)
  • 创建对象

  • 二、说明
  • 1、如果没有显式的定义的构造器,系统默认给一个空参的构造器
  • 2、定义构造器的格式:权限修饰符 类名(形参列表)
  • 3、一个类中定义的多个构造器,彼此重载
  • 4、如果我们显式的定义构造器,系统不再提供默认参数的空参构造器
  • 5、练习:编写两个类,TriAngle和TriAngleTest,其中TriAngle类中声明私有的底边边长banse
  • 和高height,同时声明公共方法访问私有变量,此外,提供类类必要的构造器,另一个类中使用这些公共方法计算三角形的面积
package javastudy;


public class  TriAngle{
    
	private double base;
	private double height;
	//定义构造器,定义一个无参的一个有参的
	public TriAngle() {
    
		
	}
	public TriAngle(double b,double h) {
    
		base = b;
		height = h;
		
	}
	public double squar(double b,double h) {
    
		double aera = b*h;
		return aera;
		
	}
	
	public void setbase(double b) {
    
		base = b;
		
	}
	public double getbase() {
    
		return base;
	}
	public void setheight(double h) {
    
		height = h;
		
	}
	public double getheight() {
    
		return height;
		
	}
}
class TriAngleTest{
    
	
	
}

package javastudy;
public class TriAngnleTest {
    

	public static void main(String[] args) {
    
		// TODO Auto-generated method stub
		//创建对象
		TriAngle t1 = new TriAngle();
		t1.setbase(8);
		t1.setheight(9);
		t1.squar(8, 9);
		System.out.println("base:" + t1.getbase() + "," + "height:" + t1.getheight()+",面积是:" + t1.squar(8, 9));

	
	}

  • 三、JavaBean
  • JavaBean是一种Java语言写成的可重用组件
  • 所谓javaBean是指符合如下标准的Java类
  • 类是公共的

  • 有一个无参的公共的构造器

  • 有属性,且有对应的get,set方法

  • 四、this关键字的使用
  • /*this关键字的使用
  • 1、this可以用来修饰:属性,方法,构造器
  • 2、this修饰属性和方法
  • this理解为当前对象(如当前的对象是p1)

  • 在类的方法中,我们可以使用this.属性,或this.方法的方式

  • 调用当前对象属性或方法,但是通常情况下,我们选择省略this.
  • 特殊情况下,如果方法的形参和类的属性名同名时,必须显式的使用this.变量的方式
  • 表明此变量是属性,而非形参。
  • 3、this调用构造器
  • 在类的构造器中,可以显式的使用this(形参列表)调用指定本类中

  • 其他构造器
  • 构造器中不能通过this(形参列表)调用自己

  • 如果有n个构造器,最多有n-1构造器使用this(形参列表)
    *>规定:this(形参列表)必须声明在当前构造器的首行

  • 构造器内部,最多只能声明一个this(形参列表)
    */
    */

public class personTest {
    
	public static void main(String[] args) {
    
		Person p1 = new Person();
		p1.setAge(8);
		System.out.println(p1.getAge());
		Person p2 = new Person("Tom",19);
		System.out.println(p2.getAge());
		
	}

}
class Person{
    
	
	//封装权限
	String name;
	int age;
	
	//构造器
	public Person() {
    
		this.eat();
		
	}
	public Person(String name)
	{
    
		//this调用构造器
		this();
		//前面name表属性,后面表形参
		this.name = name;
		
	}
	public Person(String name,int age)
	{
    
		//调用构造器
		this(name);
		this.name = name;
		this.age = age;
	}
	
	
	//为了可以调用,写get和set方法
	public void setName(String name)
	{
    
		this.name = name;
	}
	public String getName()
	{
    
		return name;
	}
	public void setAge(int age)
	{
    
		this.age = age;
	}
	public int getAge()
	{
    
		return age;
	}
	public void eat() {
    
		System.out.println("可以吃饭");
		
	}
	
}
package javastudy;

public class Person {
    
	private int age;
	public void setAge(int a) {
    
		if(a<0 || a>130)
		{
    
			System.out.println("传入异常");
			return;
		}
		age = a;
		
	}
	public int getAge() {
    
		return age;
		
	}
		
	

}

/*MVC设计模式

  • 1、mvc是常用设计模式之一,将整个程序分为三个层次:
  • 视图模型层,控制器层,数据模型层
  • 这种将程序输入输出、数据处理、以及数据的展示分离开来的设计模式使程序结构变得更加灵活且清晰,同时也描述了程序各个对象间的通信方式,降低
  • 程序的耦合性。
  • 模型层 model主要处理数据
  • 数据对象封装 model.bean/domain

  • 数据库操作类 model.dao

  • 数据库 model.db

  • 控制层 controller 处理业务逻辑
  • 应用界面 controller.activity

  • 存放fragment controller.fragment

  • 显示列表的适配器 controller.adapter

  • 服务相关的controller.service

  • 抽取的基类 controller.base

  • 视图层 view显示数据
  • 相关工具类

  • 自定义view view.ui

*/

下面是两个综合练习
在这里插入图片描述

练习1

package javaprac.test;

public class boy {
    
	private String name;
	private int age;
	
	public boy(String name, int age) {
    
		// TODO Auto-generated constructor stub
		this.name = name;
		this.age = age;
	}
	public void marry(girl g) {
    
		System.out.println("想娶的女孩叫:" + g.getName());
		
	}
	public void shout() {
    
		if(this.age>22)
		{
    
			System.out.println("你可以登记结婚了");
		}else {
    
			System.out.println("你可以多谈谈恋爱");
		}
		
	}
	
	public void setName(String name) {
    
		this.name = name;
		
	}
	public String getName() {
    
		return name;
		
	}
	public void setAge(int age) {
    
		this.age = age;
		
	}
	public int getAge() {
    
		return age;
		
	}
	

}

package javaprac.test;


public class girl {
    
	private String name;
	private int age;
	
	public girl(String name, int age) {
    
		// TODO Auto-generated constructor stub
		this.name = name;
		this.age = age;
	}
	public void marry(boy b) {
    
		System.out.println("我想嫁给:" + b.getName());
		//this当前对象,谁调用marry谁就是this
		b.marry(this);
		
	}
	public int compare(girl g) {
    
		return this.age - g.age;
		
	}
	
	public String getName() {
    
		return name;
	}
	public void setName(String name) {
    
		this.name = name;
	}
	public int getAge() {
    
		return age;
	}
	public void setAge(int age) {
    
		this.age = age;
	}
	

}

package javaprac.test;

public class boymarrygir {
    
	public static void main(String[] args) {
    
		//调用的是构造器
		boy bo = new boy("罗密O",25);
		bo.shout();
		girl gir = new girl("朱丽叶",23);
		gir.marry(bo);
		
	}

}

练习2

package javaprac.test;

public class Account {
    

	double balance;

	//构造器
	public   Account(double init_balance) {
    
		
		this.balance = init_balance;
		
	}
	//存钱
	public void deposit(double ant) {
    
		if(ant > 0)
		{
    
			balance +=ant;
			System.out.println("存钱成功");
		}
		
	}
	//取钱操纵
	public void withdraw(double ant) {
    
		if(balance>= ant)
		{
    
			balance -=ant;
			System.out.println("取钱成功");
		}else {
    
			System.out.println("余额不足");
		}
	}
	
	
	public double getBalance() {
    
		return balance;
	}

	/*
	 * public void setBalance(double balance) { this.balance = balance; }
	 */
}

package javaprac.test;

public class Bank {
    
	
	private Customer[] customers = new Customer[10];
	private int numberOfCustomer;
	public Bank() {
    
		// TODO Auto-generated constructor stub
	}
	
	//添加客户姓名
	public void addCustomer(String f,String l) {
    
		// TODO Auto-generated method stub
		Customer cust = new Customer(f, l);
		customers[numberOfCustomer] = cust;
		numberOfCustomer++;

	}
	public Customer getCustomer(int index) {
    
		// TODO Auto-generated method stub

		//注:写完if 要写一个else,否则会报错;要么写return null或抛出异常
		if(index>=0 && index<numberOfCustomer)
		{
    
			return customers[index];
		}
		return null;
	}
	//获取客户个数
	public int getNumberOfCustomer() {
    
		return numberOfCustomer;
	}
	
	
	

}

package javaprac.test;

public class Customer {
    
	
	private String firstname;
	private String lastname;
	private Account account;
	
	public Customer(String f,String l) {
    
		this.firstname = f;
		this.lastname = l;
		
	}
		
	
	
	public void Customer1(String f, String l) {
    
		// TODO Auto-generated constructor stub
	}



	public String getFirstname() {
    
		return firstname;
	}
	public String getLastname() {
    
		return lastname;
	}
	public Account getAccount() {
    
		return account;
	}
	
	public  void setAccount(Account acct) {
    
		this.account = acct;
		
	}
	public Account getAccount(Account acct) {
    
		return account;
	}
	
	
	
	

}

package javaprac.test;

public class BankTest {
    
	public static void main(String[] args) {
    
		Bank bank = new Bank();
		bank.addCustomer("Jane","smith");
		bank.getCustomer(0).setAccount(new Account(2000));
		bank.getCustomer(0).getAccount().withdraw(500);
		double balance = bank.getCustomer(0).getAccount().getBalance();
		System.out.println("客户:" + bank.getCustomer(0).getFirstname() + "账户余额为:" + balance);
	}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43896253/article/details/115277640

智能推荐

编辑器漏洞、越权、逻辑漏洞(不安全的对象引用、功能级别访问控制缺失)_ckfinder漏洞_赤赤三的博客-程序员秘密

编辑器漏洞: Ewebeditor编辑器漏洞 Fckeditor编辑器漏洞 ckfinder编辑器漏洞 旁注、目录越权、跨库、CDN绕过 旁注: 在同一个服务器上有多个站点,我们要攻击的这个站点假设没有漏洞,我们就可以攻击服务器上任意一个站点,这就是旁注 IP逆向查询有多少个站点(通过ping获得其相关地址后,通过ip地址反查其旁注的域名): http://stool.chinaz.com/Same/ http://dns.aizhan.com/ htt...

解决MAC电脑下魅族手机adb无法连接问题_wcjwdq的博客-程序员秘密

MAC电脑本对于开发者而言是一个很方便的东东,但是在对魅族MX手机调试时发现死活连接不上,原来需要做下面的事情:1、首先打开终端,输入命令:system_profiler SPUSBDataType,enter之后可以查看连接的各个usb设备的信息,找到供应商ID(Vendor ID),如MX4的Vendor ID为0x2a45;2、接着在终端输入:echo "0x2a45" > ~/.a

webstorm提示if you already hava a 64-bit JDK……以及 failed to create jvm……_肆爪的博客-程序员秘密

起因是最近webstorm一直提示out of memory,然后最近一次又提示的时候我一气之下把所有数值改成99999,然后重新启动webstorm就提示跟以上图片类似的文字提示。解决方法就是删除一个文件就可以了(我是用户配置文件出错所以用的方法二)c盘/用户/你的电脑/.WebStorm2017.1/vmoption 文件 删掉就可以了一、破解报错可能是破解时修改idea[64].exe.vmoptions文件,导致错误。一般有两种情况:参数写错,或者用记事...

Cloudify — 系统架构_cloudify 架构图_范桂飓的博客-程序员秘密

目录文章目录目录Cloudify 的核心概念Cloudify Manager 的架构Cloudify Manager VMProxy and File ServerWeb GUI and REST APICloudify Manager WorkflowWorkflow EngineTask BrokerAgentsPluginsPolicy EngineDatabaseCloudify 的核心概念Blueprints(蓝图):一个待部署的云应用。Deployments(部署):一个云应用的部署配

【Mongodb和Solr】Mongodb和solr整合_solr mongodb_Crypto Ascetic的博客-程序员秘密

1. 安装mongo 副本集 得到mongo地址 2. 安装solr 解压solr.zip文件,得到solr文件夹,上传至服务器. 启动 solr下面tomcat8099 3. 安装monconnecter 安装python pip 详见另一个文档 Linux 下安装python软件包pip 安装mongo-connector 安装mongo-conne...

随便推点

Web安全-JQuery框架XSS漏洞浅析_cve-2020-11022复现_Tr0e的博客-程序员秘密

文章目录框架简介漏洞简述漏洞检测漏洞复现漏洞分析漏洞复现修复建议新版漏洞漏洞复现漏洞原理修复方案漏洞验证框架简介jQuery是一个快速、简洁的JavaScript框架,是一个丰富的JavaScript代码库。jQuery设计的目的是为了写更少的代码,做更多的事情。它封装 JavaScript 常用的功能代码,提供一种简便的 JavaScript 设计模式,优化 HTML 文档操作、事件处理、动画设计和 Ajax 交互。据一项调查报告,在对 433000 个网站的分析中发现,77%的网站至少使用了一个具

python编程:提取word、pdf、excel信息的动词与名词,制作词云图_python 提取中文动词_HanZee的博客-程序员秘密

工具类参数:text:数据mode:word文档选 选wordexcel或者pdf选 mode=‘pdf’import osimport reimport jieba.posseg as jpgfrom wordcloud import WordCloudfrom matplotlib import pyplot as pltimport imageioimport pandas as pdimport xlrdimport xlwtimport shutilclass U

firstChild.nodeValue_bananabear的博客-程序员秘密

假设我们已经有一个dom对象,其内容如内容在javascript中,我们为了获得title的标签和文本,一般需要这样做var title =dom.getElementsByTagName(”title”);alert(title[0].nodeName);//得到“title”alert(title[0].nodeValue)的时候,FF只能获得#text,而IE只能得到null后来查了很多

springboot 中 使用devtools导致的类型转换异常_Joseph9499的博客-程序员秘密

问题由来: springboot引入了多个JdbcTemplate,但是就是注册不了这几个Bean,启动报错,信息如下。。。。。。。Caused by: org.springframework.aop.framework.AopConfigException: Unexpected AOP exception; nested exception is java.lang.Link...

—(二)水晶报表(CrystalReports)的简单应用(配置及发布)_weixin_30888413的博客-程序员秘密

u Visual studio 2008 自带水晶报表10u asp.net网站中的简单应用u 本次示例目的只是让刚接触水晶报表的朋友掌握其应用,因此示例以简单,简洁,清晰为主,没有连接后台数据库。Visual studio 2008新建asp.net网站CrystalReportsDemo如图: 右击项目——&gt;添加引用:添加一个实体类...

牛顿插值法——用Python进行数值计算_小糊涂神儿的博客-程序员秘密

拉格朗日插值法的最大毛病就是每次引入一个新的插值节点,基函数都要发生变化,这在一些实际生产环境中是不合适的,有时候会不断的有新的测量数据加入插值节点集,因此,通过寻找n个插值节点构造的的插值函数与n+1个插值节点构造的插值函数之间的关系,形成了牛顿插值法。推演牛顿插值法的方式是归纳法,也就是计算Ln(x)- Ln+1(x),并且从n=1开始不断的迭代来计算n+1时的插值函数。   牛顿插值法的公式...

推荐文章

热门文章

相关标签