当前位置:网站首页>封装和练习题目
封装和练习题目
2022-08-03 00:04:00 【弱冠初心】
封装英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
- 良好的封装能够减少耦合。
- 类内部的结构可以自由修改。
- 可以对成员变量进行更精确的控制。
- 隐藏信息,实现细节。
实现Java封装的步骤
1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:
这段代码中,将 name和 health 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
public class Dog {
// 定义属性,使用private修饰符进行封装
private String name;
private int health;
}
2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如 :
public class Penguin {
// 定义属性
private String name;
private int health;public Penguin() {
}
public Penguin(String name, int health, int love) {
this.name = name;
this.health = health;
this.love = love;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setHealth(int health){
//调用此方法来给对象的health赋值,在赋值前对传过来的health进行判断
if(health<0||health>100){
System.out.println("您输入的健康值有误,默认给健康值赋值为60");
this.health = 60;
return;//这里的return作用是结束方法后续代码的执行
}
this.health =health;
}
public int getHealth(){
return health;
}
}
题目1:
01:设计一个Dog类,有名字、颜色和年龄属性,提供无参的构造方法和一个有参的构造方法,定义输出方法show()显示其信息。
使用有参构造方法创建一个对象,并输出该对象的信息。
public class Demo01 {
String name;
String color;
int age;
public Demo01() {
super();
}
public Demo01(String name, String color, int age) {
super();
this.name = name;
this.color = color;
this.age = age;
}
public void show(){
System.out.println("这只"+this.color+"的狗叫"+this.name+"今年"+this.age+"了");
}
public static void main(String[] args) {
Demo01 dog = new Demo01();
dog.age=11;
dog.color="五彩斑斓";
dog.name="萧衍";
dog.show();
Demo01 dog2=new Demo01("百战", "花里胡哨", 89);
dog2.show();
}
}02:写一个人的类
属性:名字,性别,年龄;提供无参的构造方法和一个有参的构造方法
方法:(1)自我介绍的方法(2)吃饭的方法
使用有参构造方法创建一个对象:姓名为“张三”,性别为“男”,年龄25.
/*
* 写一个人的类
属性:名字,性别,年龄;提供无参的构造方法和一个有参的构造方法
方法:(1)自我介绍的方法(2)吃饭的方法
使用有参构造方法创建一个对象:姓名为“张三”,性别为“男”,年龄25.
*/
public class Person {
String name;
String gender;
int age;
public Person(String name, String gender, int age) {
super();
this.name = name;
this.gender = gender;
this.age = age;
}
public Person() {
super();
}
public void eat(){
System.out.println(this.name+"只会干饭");
}
public void who(){
System.out.println("我是"+name+",今年"+age+","+gender+"!!");
}
public static void main(String[] args) {
Person per = new Person("赵信", "猛男", 88);
per.who();
per.eat();
}
}03:写一个汽车类:
属性:品牌;车长;颜色;价格;
提供无参的构造方法和一个有参的构造方法
使用有参构造方法创建五个对象:“捷达”,“宝马”,“劳斯莱斯”,“科鲁兹”,“迈锐宝”
/*
* 写一个汽车类:
属性:品牌;车长;颜色;价格;
提供无参的构造方法和一个有参的构造方法
使用有参构造方法创建五个对象:“捷达”,“宝马”,“劳斯莱斯”,“科鲁兹”,“迈锐宝”
*/
public class Cars {
public String brand;
public double busLength;
public String color;
public double price;
public Cars() {
super();
}
public Cars(String brand, double busLength, String color, double price) {
super();
this.brand = brand;
this.busLength = busLength;
this.color = color;
this.price = price;
}
public void runs(){
System.out.println("长"+busLength+"米"+color+"的"+brand+"价值"+price+"万元在路上跑");
}
public static void main(String[] args) {
Cars car = new Cars("捷达", 10, "黄色", 55);
Cars car2 = new Cars("宝马", 6, "禄色", 20);
Cars car3 = new Cars("劳斯莱斯", 4.3, "红色", 90);
Cars car4 = new Cars("科鲁兹", 5, "黑色", 60);
Cars car5 = new Cars("迈锐宝", 9, "白色", 75);
car.runs();
car2.runs();
car3.runs();
car4.runs();
car5.runs();
}
}04:写一个课程类:
属性:课程名;学时;任课老师;
提供无参的构造方法和一个有参的构造方法
使用有参构造方法创建五个对象:“c语言”,“Java编程”,“php网络编程”,“c++”,“数据结构”
/*
写一个课程类:
属性:课程名;学时;任课老师;
提供无参的构造方法和一个有参的构造方法
使用有参构造方法创建五个对象:“c语言”,“Java编程”,“php网络编程”,“c++”,“数据结构”
*/
public class Course {
public String courseName;
public int period;
public String teacherName;
public Course(String courseName, int period, String teacherName) {
super();
this.courseName = courseName;
this.period = period;
this.teacherName = teacherName;
}
public void prunt(){
System.out.println(courseName+"课,学时:"+period+",老师:"+teacherName);
}
public Course() {
super();
}
public static void main(String[] args) {
Course cou = new Course("c语言", 13, "朱自清");
Course cou2 = new Course("Java编程", 16, "鲁迅");
Course cou3 = new Course("php网络编程", 10, "李清照");
Course cou4 = new Course("c++", 9, "李白");
Course cou5 = new Course("数据结构", 18, "苏轼");
cou.prunt();
cou2.prunt();
cou3.prunt();
cou4.prunt();
cou5.prunt();
}
}05:定义一个圆类型
属性:半径
提供无参的构造方法和一个有参的构造方法
提供显示圆周长功能的方法
提供显示圆面积的方法
使用有参构造方法创建一个对象并计算圆的周长和面积。
/*
* 义一个圆类型
属性:半径
提供无参的构造方法和一个有参的构造方法
提供显示圆周长功能的方法
提供显示圆面积的方法
使用有参构造方法创建一个对象并计算圆的周长和面积。
*/
public class Circle {
public double r;
public Circle(double r) {
super();
this.r = r;
}
public Circle() {
super();
}
public double area(){
return 3.14*r*r;
}
public double perimeter(){
return 3.14*r*2;
}
public void print(){
System.out.println("周长:"+this.area()+"面积:"+perimeter());
}
public static void main(String[] args) {
Circle cir = new Circle(5);
cir.area();
cir.perimeter();
cir.print();
}
}
边栏推荐
猜你喜欢
随机推荐
一文读懂 Web 3.0 应用架构
九零后程序员心声:互联网的同行们,别卷了,再卷人都卷没了
flutter空安全问题,平时用到的数据一定要注意
【图像分类】2021-EfficientNetV2 CVPR
2022 开放原子全球开源峰会 | 麒麟信安携手openEuler助力开源产业繁荣发展
ASP.NET网络版进销存管理系统源码【源码免费分享】
牛客网剑指offer刷题练习之链表中环的入口结点
Vite教程 安装
1686. 石子游戏 VI
js基础知识整理之 —— 获取元素和命名规范
[NCTF2019]SQLi-1||SQL注入
Understand the next hop address in the network topology in seconds
如何修复 SAP UI5 aggregation with cardinality 0..1 相关的错误消息
Moco of Mock tools use tutorial
Servlet——请求(request)与响应(response)
优秀论文以及思路分析01
2149. 按符号重排数组
和睦家私有化后换帅:新风天域吴启楠任CEO 李碧菁靠边站
淘宝商品销量接口/淘宝商品销量监控接口/商品累计销量接口代码对接分享
流程控制for和while循环语句









