第8章 包及访问控制权限

1、

项目的大致框架截图为:

代码如下:

package li.a.yun.inter;

public interface Pet {
    public String getName();
    public String getColor();
    public int getAge();
}
package li.a.yun.entity;

import li.a.yun.inter.Pet;

public class Cat implements Pet {
    private String name;
    private String color;
    private int age;

    public Cat(String name, String color, int age) {
        this.name = name;
        this.color = color;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package li.a.yun.entity;

import li.a.yun.inter.Pet;

public class Dog implements Pet {
    private String name;
    private String color;
    private int age;

    public Dog(String name, String color, int age) {
        this.name = name;
        this.color = color;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package li.a.yun.util;

import li.a.yun.inter.Pet;

public class PetShop {
    private Pet[] pets;
    private int foot = 0;

    public PetShop(int len) {
        if(len <= 0)
            throw new RuntimeException("宠物商店必须至少存在一种宠物");
        this.pets = new Pet[len];
    }

    public boolean add(Pet p) {
        boolean isAdd = false;
        if(foot != pets.length) {
            pets[foot] = p;
            foot++;
            isAdd = true;
        } else {
            throw new RuntimeException("宠物商店已满,不能继续添加宠物了");
        }
        return isAdd;
    }

    /*
     * 根据宠物的关键字查找到相应的宠物信息
     */
    public Pet[] search(String key) {
        Pet[] p = null;
        int count = 0;

        for(int i = 0; i < this.pets.length; i++) {
            if(this.pets[i] != null) {
                if(this.pets[i].getName().indexOf(key) != -1 ||
                    this.pets[i].getColor().indexOf(key) != -1)
                    count++;
            }
        }

        p = new Pet[count];

        for(int i = 0, f = 0; i < this.pets.length; i++) {
            if(this.pets[i] != null) {
                if(this.pets[i].getName().indexOf(key) != -1 ||
                    this.pets[i].getColor().indexOf(key) != -1) {
                    p[f] = this.pets[i];
                    f++;
                }
            }
        }

        return p;
    }
}
package li.a.yun.test;

import li.a.yun.entity.Cat;
import li.a.yun.entity.Dog;
import li.a.yun.inter.Pet;
import li.a.yun.util.PetShop;

public class Test {

    public static void main(String[] args) {
        PetShop ps = new PetShop(5);
        ps.add(new Cat("白猫", "黑色的", 2));
        ps.add(new Cat("黑猫", "黑色的", 3));
        ps.add(new Cat("花猫", "花色的", 3));
        ps.add(new Dog("拉布拉多", "黄色的", 3));
        ps.add(new Dog("金毛", "金色的", 2));
        //System.out.println(ps.add(new Dog("黄狗", "黑色的", 2)));
        print(ps.search("黑"));
    }
    private static void print(Pet[] pets) {
        for(int i = 0; i < pets.length; i++) {
            if(pets[i] != null) {
                System.out.println(pets[i].getName()+","+pets[i].getColor()+","+pets[i].getAge());
            }
        }
    }
}
时间: 2024-10-13 02:11:04

第8章 包及访问控制权限的相关文章

包的访问控制权限

private:可以定义方法,属性,定义的方法和属性不能被类的外部所看到. default:可以在本包的任意地方访问. public:都可以访问,不受任何限制. protected:保护,不同包的非子类不可以访问. protected权限,在不同包的它的子类能够被访问: package org.lxh.demo08.g ; public class HelloDemo{ protected String name = "LXH" ; // 只能在本包及不同包的子类中访问 }; 在其他包

Java中的包与访问权限的控制

多人开发 在java中,可以将一个大型项目中的类分别独立出来,分门别类的存到文件里,再将这些文件一起编译运行,如此的程序代码将更易于维护. 多人开发的问题:如果多个开发人员共同开发一个项目的时候,则肯定会出现类名称相同的情况.那么这样一来就会非常麻烦. 相同的文件会出现覆盖的情况. 包的概念 package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可. 包的定义格式: package 包名称.子包名称: package org.lxh.dem

Java访问控制权限

Java的访问控制权限相比于C++等语言可能稍微复杂一点,不过也不难理解.Java的访问控制权限分为两块--"类或接口的访问控制权限"与"变量和方法的访问控制权限". 1.类或接口的访问控制权限     类或接口的访问控制权限是指能不能用该类建立对象,接口能不能被实现等等.能够修饰类或接口的访问控制权限的修饰符(modifier)只有两个--public和friendly.不过,值得一说的是friendly并不是Java的关键字,它只是一个习惯叫法,指的是"

访问控制权限

访问控制权限 访问控制权限的等级,从最大权限到最小权限依次为:public,protected,包访问权限(没有关键字)和private. 默认访问权限没有任何关键字,但通常是指包访问权限.这就意味着当前包中的其他所有类对那个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private.由于一个编译单元只能隶属于一个包,所以经由包访问权限,处于同一个编译单元的所有类彼此之间是自动可访问的.包访问权限允许将包内所有相关的类组合起来,以使它们之间可以轻松的相互作用. public:接口访问

JAVA 基础 访问控制权限

包(package) package的作用 当编写一个JAVA源码文件时,此文件通常被称为编译单元.每个编译单元都必须有一个后缀名 .java . 而在编译单元中可以有一个 public 类,该类的名称必须和文件的名称相同.文件中允许有其他类,但是不能是public类. 当编译一个 .java 文件时,文件中的每个类都会有一个后缀为 .class 的输出文件,文件名和类名相同. Java可运行程序是一组可以打包压缩为一个Java文档文件(JAR,使用Java的jar文档生成器)的.class文件

java访问控制权限和C++访问控制权限的对比

1.java修饰符权限 这里有一个包的概念,所谓同一个包是指*.java文件处于同一个文件夹下 2.C++修饰符权限 public:这是公有的成员,允许类外直接访问,当然,这要加上类作用域符::, protected:这是保护成员,只允许该类及其派生类访问 private:这是私有成员,只允许在该类中进行访问,当然,在类外只可以通过设定的公有函数进行访问. java访问控制权限和C++访问控制权限的对比

Java包及访问权限,扫盲贴

当一个大型程序由数个不同的组别或人员开发共同开发时,用到相同的类名称是很有可能的事.如果这种情况发生,还要确保程序可以正确运行,就必须通过package关键字来帮忙了.package是在使用多个类或接口时,为了避免名称重复而采用的一种措施.那么具体应该怎么使用呢?在类或接口的最上面一行加上package的声明就可以了. package的声明格式:package package名称; 经过package的声明之后,在同一文件内的接口或类都被纳入相同的package中.程序TestPackage1是

1-14访问控制权限

4种访问控制权限 java访问级别修饰符主要包括:private .protected.public和default(默认),可以限定其他类对该类.属性和方法的使用权限. 注意以上对类的修饰只有:public和default,内部类除外 priavte和public都比较好理解和记忆,这里就不演示了,主要演示一下不同包下的两个具有父子关系的类里面使用protected和default的区别. 创建一个Person类 package com.monkey1024.score.sys; public

Java连载50-import导入、访问控制权限修饰符

一.import 1.import语句用来完成导入其他类,同一个包下的类不需要再导入 不在同一个包下需要手动导入. 2.import语法格式 import 类名: import 包名.*; //import语句需要编写到package语句之下,class语句之上. 3.java.lang.*;不需要手动引入,?系统自动引入. lang:language语言包,是java语言的核心类,不需要手动引入. 4.最终结论?: 什么时候需要import? 使用外部类,外部方法 5.快捷键 快速导包,我们用