封装、构造

类的封装:

类的封装性即不能让外面的类随意修改一个类的成员变量; 在定义一个类的成员,使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用; 为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。


类的构造方法:

构造方法是一种特殊的方法,具有以下特点。(1)构造方法的方法名必须与类名相同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。(5)构造方法可以重载,以参数的个数,类型,顺序。



练习1:
import java.util.Scanner;


//请通过代码封装,实现如下需求:
//编写一个类Book,代表教材:
//具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200
//为各属性设置赋值和取值方法
//具有方法:detail,用来在控制台输出每本教材的名称和页数
//编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确
public class Book {
private String title;
private int pageNum=200;
private void detail() {
Scanner scr=new Scanner(System.in);
System.out.println("输入教材名称:");
this.title= scr.next();
System.out.println("输入教材页数:");
this.pageNum = scr.nextInt();
if (pageNum<200) {
System.out.println("错误信息");
}
else {
System.out.println("教材的名称:"+title);
System.out.println("教材页数为:"+pageNum);
}  
}
public static void main(String[] args) {
Book book=new Book();
book.detail();

}

}


练习2:

//创建一个狗类:Dog
//为Dog添加yao(咬)方法,实现狗咬的功能
//如果是yao(),什么都不传,则是“汪汪叫”
//如果是yao(String str),则是“咬骨头,好香啊”
//如果是yao(Person p),传入的是人类,如果人的性别为男,则“扑上去撕咬”,如果人的性别是女,则“跑过去舔两口”
public class Dog {
public void yao() {
System.out.println("汪汪叫");
}
public void yao(String str) {
System.out.println("咬骨头,好香啊");
}
public void yao(Person p) {
if (p.equals("男")) {
System.out.println("扑上去撕咬");
}
else if (p.equals("女")){
System.out.println("跑过去舔两口");
}

}


}

练习3:


// 1) 创建一个学生类
// 2) 创建四个私有的字段:name,sex,age,dire
// 3) 分别为私有的字段提供属性:name长度不能超过四位,sex只能是男或女,age 1-60,dire方向只能是.net或java
// 4) 测试:创建学生对象,设置属性,再分别在控制台打印该学生的基本信息
public class Student {
private String name;
private String sex;
private int age;
private String dire;
public Student(String name,String sex,int age,String dire) {
this.name=name;
this.sex=sex;
this.age=age;
this.dire=dire;
}

public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public String getSex() {
return sex;
}


public void setSex(String sex) {
this.sex = sex;
}


public int getAge() {
return age;
}


public void setAge(int age) {
this.age = age;
}


public String getDire() {
return dire;
}


public void setDire(String dire) {
this.dire = dire;
}
public static void main(String[] args) {
Student stu=new Student("张三","男",22,"java");
System.out.println("姓名:"+stu.getName());
System.out.println("性别:"+stu.getSex());
System.out.println("年龄:"+stu.getAge());
System.out.println("方向:"+stu.getDire());
}


}

//练习4:
// 定义一个Tank类(坦克类),为其定义x(横坐标),y(纵坐标),dir(方向:值为上下左右),Type(类型)4个字段,其访问修饰符均为公有;
// 为Tank类定义一个构造方法实现4个字段的初始化
// 为Tank类定义一个ShowData方法,控制台打印4个字段值
// 创建一个Tank对象,横坐标为10,纵坐标为50,方向为右,类型为重型坦克,并通过调用对象的ShowData()方法打印Tank信息


public class Tank {
public int x;
public int y;
public String dir;
public String Type;
public Tank(int x,int y,String dir,String Type){
this.x=x;
this.y=y;
this.dir=dir;
this.Type=Type;
}
public void ShowData() {
System.out.println("x="+this.x);
System.out.println("y="+this.y);
System.out.println("dir="+this.dir);
System.out.println("Type="+this.Type);
}
public static void main(String[] args) {
Tank tank=new Tank(10,50,"右","重型坦克");
tank.ShowData();
}

}



import java.util.Scanner;


//练习五:
// 1) 创建一个老师类:Teacher
// 2) 为老师添加字段:id,name,sex,age,height
// 3) 分别为字段添加对应的属性:
// id:int,不用校验
// name:string,长度大于一位少于四位
// sex:string,只能是男和女
// age:int,只能在20-55之间
// height:double,只能在1.50-1.80之间
// 定义一个ShowData方法,打印编号、姓名、性别、身高
// 4) 创建一个老师对象,调用其ShowData();
public class Teacher {
public int id;
public String name;
public String sex;
public int age;
public double height;
Scanner scr=new Scanner(System.in);
public int getId() {
System.out.println("输入编号:");
id=scr.nextInt();
return id;

}
public String getName() {
System.out.println("输入姓名:");
name=scr.next();
if (name.length()>0&&name.length()<4) {
return name;
}
else {
System.out.println("姓名输入错误,请重新输入:");
return getName();
}

}
public String getSex() {
System.out.println("输入性别:");
sex=scr.next();
if (sex.equals("男")||sex.equals("女")) {
return sex;
}
else {
System.out.println("性别输入错误,请重新输入:");
return getSex();
}

}
public int getAge() {
System.out.println("输入年龄:");
age=scr.nextInt();
if (age>20&&age<55) {
return age;
}
else {
System.out.println("年龄输入错误,请重新输入:");
return getAge();
}
}
public double getHeight() {
System.out.println("输入身高:");
height=scr.nextDouble();
if (height>1.5&&height<1.8) {
return height;
}
else {
System.out.println("身高输入错误,请重新输入:");
return getHeight();
}
}
public void ShowData() {
System.out.println("编号"+getId()+"\n姓名"+getName()+"\n性别"+getSex()+"\n年龄"+getAge()+"\n身高"+getHeight());
}
public static void main(String[] args) {
Teacher tr=new Teacher();
tr.ShowData();
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值