#码神心得_07# 面向对象

java的面向对象思想


每一次上Java_Android课都有会有收获,这就足够了!

1、面向对象与面向过程:

面向过程:“该怎么做”,分解过程,逻辑为先

面向对象:“该让谁来做”,先抽象,后具体

2、对象的声明:Person p = new Person(); 

其中变量p只是一个引用地址,指向Person对象。

3、this关键字:指向当前对象的实例

4、类方法与类变量:都必须用static关键字修饰

调用类方法与类变量时并不需要创建一个对象,可以直接通过类名.方法(类名.变量)进行调用

如:Arrays.toString();调用Arrays类的toString()方法。

5、实例方法与变量:必须通过创建一个类的对象进行调用

6、方法的参数传递:只有值传递而没有址传递

7:递归方法:一种直接或间接调用自身函数的方法或算法。

为了避免死循环,递归一定要有一个“出口”,即结束递归的出口

8、方法的重载:方法名相同参数不同,对于返回类型和修饰符没有严格要求

方法重载的好处:可以根据输入的参数的不同从而采取不同的措施

9、构造器:即构造方法。

对于每一个类,如果没有声明构造方法,则java系统会默认的给出一个隐藏的空的构造方法,如果已经声明了构造方法,则默认构造方法则会被覆盖。

10、可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理

例如:

public class Party {
	public void info(String...names) {
		System.out.println("人数:"+names.length);
		System.out.println("名单:");
		for (String string : names) {
			System.out.print(string+" ");
		}
		
	}
	public static void main(String[] args) {
		Party party = new Party();
		party.info("小明","小红");
	}
	
}


课堂作业


实现一个具有良好封装性的中年Person类 

要求:  

1. 包含属性用户名和年龄; 

2. 对年龄比较合理的校验; 

3. 要求输入的用户名在6~8位之间;(其中中文字符每个占2个字节


代码实现如下:

package mashenHomeWork;
import java.io.UnsupportedEncodingException;

public class MidlePerson {
	
	private String name ;
	private int age ;
	int temp = 0;
	
	public MidlePerson(String name,int age) {
		check(name , age);
	}

	public void check(String name, int age) {
		checkAge(age);
		checkName(name);
		if(temp==0){
			System.out.println("用户名为: "+getName()+"\t年龄为: "+getAge());
		}
	}
	
	public void checkName(String name) {	
		try {
			//String.getBytes(编码)将一个字符串转化为一个字节数组
			int length = name.getBytes("GBK").length;
			
			if(length<=8 && length>=6){
				setName(name);
			}else{
				System.out.println("警告!用户名长度必须在6~8之间");
				temp = 1;
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}

	public void checkAge(int age) {
		if(age >= 40 && age <= 55){
			setAge(age);
		}else{
			System.out.println("警告!年龄必须在40~55之间。");
			temp = 1;
		}	

	}

	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;
	}
	
	public static void main(String[] args) {
		
		MidlePerson mPerson = new MidlePerson("陈红心", 53);
		
		
	}
}
其中难点为如何求出输入的中文字符的位数。一个中文字符占两位,即2字节

在java.io.UnsupportedEncodingException类中

有一个方法String.getBytes(编码):将一个字符串转化为一个字节数组

因此可以通过String.getBytes(编码).length就可以求出String的字节数了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值