当前位置:网站首页>封装和练习题目
封装和练习题目
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();
}
}
边栏推荐
猜你喜欢
Jmeter二次开发实现rsa加密
Moco of Mock tools use tutorial
IDEA多线程调试
Auto.js special positioning control method cannot perform blocking operations on the ui thread, please use setTimeout instead
NLP commonly used Backbone model cheat sheet (1)
稳压电源: 电路图及类型
js基础知识整理之 —— 获取元素和命名规范
淘宝商品销量接口/淘宝商品销量监控接口/商品累计销量接口代码对接分享
2022 开放原子全球开源峰会 | 麒麟信安携手openEuler助力开源产业繁荣发展
开源聚力,共创未来 | 麒麟信安祝贺openKylin首个体验版正式发布!
随机推荐
Rasa 3.x 学习系列- Rasa - Issues 4792 socket debug logs clog up debug feed学习笔记
关于地图GIS开发事项的一次实践整理(上)
用了这么多年的LinkedList,作者说自己从来不用它?为什么?
简单聊聊MySQL中的六种日志
Database auditing - an essential part of network security
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping的区别
【mysql知识点整理】--- order by 、group by 出现Using filesort原因详解
Auto.js 特殊定位控件方法 不能在ui线程执行阻塞操作,请使用setTimeout代替
通力传动递交注册:年营收4.7亿 实控人项献忠家族色彩浓厚
Merge two excel spreadsheet tools
ASP.NET网络版进销存管理系统源码【源码免费分享】
优秀论文以及思路分析01
升级版的冒泡排序:鸡尾酒排序(快乐小时排序)
Vite教程 安装
【Autosar RTM】
D experimental new anomaly
flutter空安全问题,平时用到的数据一定要注意
CIO修炼手册:成功晋升CIO的七个秘诀
十年架构五年生活-05第一次出差
Connect the Snowflake of CKAN tutorial CKAN to release to open data portal