2019.1.18 任务
作业链接:https://pan.baidu.com/s/1CGBmGJdpA-dPOygUisTkvQ
提取码:i2zh
一、笔记
1.封装
将状态信息隐藏在内部类,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
步骤:私有化属性、创建属性的方法-set()get()、在set/get方法中设置传参或者取值条件
封装的意义(安全 简单 可重用 可扩展):便于使用者正确使用系统,防止错误修改属性
有助系统之间的松耦合,提高系统独立性
提高软件的可重用性
降低了构建大型系统的风险
包
作用:①包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件
②防止命名冲突③包允许在更广的范围内保护类、数据和方
物理表示:在com目录下有pct目录,在往下ccc目录下有Dog类和Test类和aaa目录,aaa目录下还有个Dog类
在一个包里调用另一个包的东西,需要用到关键字import导入,
*表示全部,导入要具体到哪个类。
使用多个同名但不在同一个包里的类
使用访问修饰符
private:在同一个类中可以使用,其他都不能使用
默认修饰符:在同一个类中同一个包中可以使用
protected:同一个类、同一个包、子类中可以使用,其他地方不能使用
public:都可以使用
注: 默认和protected 不能访问在同一个包的子类
static关键字
类中可以创建多个对象,如果多个对象中的某些数据需要共用,则用到static关键字修饰这些数据。
static修饰代码块 优先执行,在创建对象前就执行 static修饰代码块只能加载一次 static只修饰成员变量
如果对象不创建,则普通代码块不能够被执行,当然,普通方法也无法调用
如果对象不创建,静态代码块依然能够被执行,所以,静态方法可以直接通过类调用
普通属性、方法、代码块是对象级别的
static修饰的属性、方法、代码块是类级别的
static:修饰方法为静态方法,没有static修饰的时实列方法
static的用法:
static修饰变量、方法、代码块,是类级别,可以直接通过类来调用,类一加载就优先加载static修饰的部分、并且只加载一次
2.继承
继承是软件可重用性的一种表现,新类在不添加自身代码的情况下,通过现有的类中继承其属性和方法,来添加自身。也就是把多个类中共有的属性和方法提取出来当
做父类,子类只需要调用就行。
每个类只能继承一个父类(Object是所有类的父类)
可以继承public和protected修饰的属性和方法,不论子类和父类是否在同一个包里。
子类继承不了构造方法但是可以调用父类的构成方法
重写
如果从父类继承的方法不能满足子类的需求,可以在子类中对父类的同名方法进行重写(覆盖)。
重写方法与被重写方法必须具有相同的方法名、参数列表,两者间返回值类型必须相同,重写方法不能缩小被重写方法的访问权限。
重写与重载的区别:重载是同一个类中方法名相同,参数列表不同,与返回值类型无关;而重写是子类与父类之间方法名相同、参数列表相同、返回值类型相同
package com.homework; public class Pet { private String name; private int health; 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) { if(health < 0 || health > 100){ health = 60; } this.health = health; } public int getLove() { return love; } public void setLove(int love) { if(love < 0 || love > 100){ love = 0; } this.love = love; } public void print() { System.out.println("宠物的自白:"); System.out.print("我的名字叫"+getName()+",健康值是"+getHealth()+",和主人的亲密度是"+getLove()); } }
package com.homework; public class Dog extends Pet{ private String breed; public String getBreed() { return breed; } public void setBreed(int breed) { if(breed==1) { this.breed = "泰迪"; }else if(breed==2){ this.breed = "占鳌"; }else { System.out.println("输入错误!"); } } public void print() { super.print(); System.out.println(",我的种类是"+this.breed); } }
package com.homework; public class Penguin extends Pet{ private String sex; public String getSex() { return sex; } public void setSex(int sex) { if(sex==1) { this.sex = "Q仔"; }else if(sex==2){ this.sex = "Q妹"; }else{ System.out.println("输入错误!"); } } public void print() { super.print(); System.out.println(",我的性别是"+this.sex); } }
package com.homework; public class Cat extends Pet{ private String color; public String getColor() { return color; } public void setColor(int color) { if(color==1) { this.color = "褐色"; }else if(color==2){ this.color = "白色"; }else { System.out.println("输入错误!"); } } public void print() { super.print(); System.out.println(",我的颜色是"+this.color); } }
package com.homework; import java.util.Scanner; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("欢迎来到宠物店!"); System.out.print("请选择您要领养的宠物类型:(1、狗狗 2、企鹅3、猫):"); int count = sc.nextInt(); if(count == 1){ Dog dog = new Dog(); System.out.print("请输入领养的狗狗的姓名:"); dog.setName(sc.next()); System.out.print("请输入狗狗的种类(1、泰迪 2、占鳌):"); dog.setBreed(sc.nextInt()); System.out.print("请输入狗狗的健康值(0-100):"); dog.setHealth(sc.nextInt()); System.out.print("请输入狗狗的亲密度(0-100):"); dog.setLove(sc.nextInt()); dog.print(); }else if(count == 2){ Penguin penguin = new Penguin(); System.out.print("请输入领养的企鹅的姓名:"); penguin.setName(sc.next()); System.out.print("请输入企鹅的性别(1、Q仔 2、Q妹):"); penguin.setSex(sc.nextInt()); System.out.print("请输入企鹅的健康值(0-100):"); penguin.setHealth(sc.nextInt()); System.out.print("请输入企鹅的亲密度(0-100):"); penguin.setLove(sc.nextInt()); penguin.print(); } else { Cat cat = new Cat(); System.out.print("请输入领养的猫的姓名:"); cat.setName(sc.next()); System.out.print("请输入企鹅的性别(1、褐色 2、白色):"); cat.setColor(sc.nextInt()); System.out.print("请输入企鹅的健康值(0-100):"); cat.setHealth(sc.nextInt()); System.out.print("请输入企鹅的亲密度(0-100):"); cat.setLove(sc.nextInt()); cat.print(); } } }