当前位置:网站首页>封装和练习题目
封装和练习题目
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();
}
}
边栏推荐
猜你喜欢
随机推荐
6、Powershell命令配置Citrix PVS云桌面桌面注销不关机
letcode 第20题-有效的括号
可编程逻辑控制器(PLC) : 基础、类型和应用
记一次sql优化Using temporary; Using filesort
GTK实现水波纹效果
Understand the next hop address in the network topology in seconds
一套开源的可快速搭建自己的物联网/智能家居系统源码
Day117. Shangyitong: Generate registered order module
简单聊聊MySQL中的六种日志
【Autosar RTM】
科捷智能冲刺科创板:年营收12.8亿 顺丰与日日顺是股东
九零后程序员心声:互联网的同行们,别卷了,再卷人都卷没了
Introduction to resubmit Progressive Anti-Duplicate Submission Framework
线性DP
优秀论文以及思路分析01
谷歌 Chrome 浏览器 104 正式版发布:加快网页加载,蓝牙 API 改进
Speech Synthesis Model Cheat Sheet (1)
IDEA多线程调试
用了TCP协议,就一定不会丢包吗?
淘宝商品销量接口/淘宝商品销量监控接口/商品累计销量接口代码对接分享