定义: 封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
实现:
封装前:
public String name; public int heath; public int type; 123456
第一步:私有化private方法
private String name; private int health; private int type; 12345
第二步:提供public方法,一般是set和get方法
JAVA中对于变量的操作,仅有访问(get)和赋值(set)两种操作
public String getType(){return type; } public void setType(String type){this.type=type; } 123456
第三步:在构造中调用set和get方法,而不是直接赋值
public void print() { System.out.println("我的名字叫" + this.getName() + ",健康值" + this.getHealth() + ",和主人的亲密度" + this.getLove() + ",性别是:" + this.strain); } 123456
定义: 借助继承,可以在现有类的基础上进行设计并充分利用它们已经具备的各种方法,而对设计进行修改也更为轻松。这样可以减少重复性的代码。
关键字 extends
实现:
class A{//A是父类 } class B extends A{//B是A的子类,也可以说B继承了A } 123456
正如一个人只有一个生父一样,一个类只能有一个父类(或者说只能继承自一个类)
例子:
现在有一个Dog(狗)类和一个Penguin(类)。
class Dog{ private String name; private int health = 100; private int love; private int strain; } class Penguin{ private String name; private int health = 100; private int love; private int sex; } 1234567891011121314
大家会发现在这两个类中有name、health、love三个属性在两个类中重复出现。
这样就造成了冗余1。为了解决这个情况,我们要创建一个宠物(Pet)类。储存这三个元素且作为父类。
修改后如下:
public class Pet {//父类Petprivate String name;private int health = 100;private int love;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {this.health = health;}public int getLove() {return love;}public void setLove(int love) {this.love = love;}// 健康值 } /** * 狗狗类 * * @author zhao9 * */ public class Dog extends Pet{private String strain;public String getStrain() {return strain;}public void setStrain(String strain) {this.strain = strain;}/** * 输出狗狗信息 */public void print() {System.out.println("我的名字叫" + super.getName() + ",健康值" + super.getHealth() + ",和主人的亲密度" + super.getLove()+ ",我是一只:" + this.strain);/* 操作 */} } public class Penguin extends Pet {private String strain;public String getStrain() {return strain;}public void setStrain(String strain) {this.strain = strain;}/** * 输出企鹅信息 */public void print() {System.out.println("我的名字叫" + super.getName() + ",健康值" + super.getHealth() + ",和主人的亲密度" + super.getLove()+ ",性别是:" + this.strain);/* 操作 */} }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081权限修饰符(public、protected、private、defalut)
使用如下表:
引用了大佬的博客
以上文父类的定义程序进行演示:
System.out.println(this.name); 1 this调用本类中的其他方法;
public void print() { System.out.println("我的名字叫" + this.getName() + ",健康值" + this.getHealth() + ",和主人的亲密度" + this.getLove() + ",性别是:" + this.strain); } 1234 this调用本类中的其他构造方法,调用时要放在构造方法的首行。
super作为调用方法使用,基本与this相同
super用于调用父类的成员变量 、函数方法 、父类的构造函数
System.out.println(super.name);//调用父类中的姓名变量 1 调用父类中的方法
System.out.println(super.getName());//调用父类中的姓名返回函数 1 调用父类的构造函数
super(1.2.3);//直接调用父类的函数 1
JAVA中没有全局变量一说,而static所构建的函数或者变量在某种意义上实现了全局变量这一概念
static所修饰的变量或者方法与对象并没有依赖性。你可以在不创建对象的前提下去使用static所修饰的变量或者方法。
static所修饰的函数中并不可以出现this、super等关键字
public static int a;//静态变量 public static void print(String str){//静态方法System.out.println(str); } 1234
在我的上一篇文章里已经说了一本分,点击这里
在这里要补充的是如果是实体包,尽量使用entity;
测试类包则使用test
冗余概念——百度百科 ↩︎
参考自此处 ↩︎
相关知识
Java入门
基于JAVA宠物健康顾问系统 毕业设计开题报告
php java nodejs微信小程序的流浪宠物领养系统16cj8
电子宠物游戏java
Java基于JAVA语言的宠物寄养管理(开题+源码)
编写Java程序模拟主人养宠物 java写一个宠物系统
【Java项目】java实战宠物领养系统项目
java测试类pet
java
用java写的小宠物游戏
网址: Java入门 https://m.mcbbbk.com/newsview142230.html
上一篇: 军犬训练讲义 第四章:基础科目的 |
下一篇: 驯养狗基础本领 |