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();
        }
    }
}

 

posted @ 2019-01-18 19:30  毕家唆  阅读(110)  评论(0编辑  收藏  举报