day09面向对象-

包机制

问题:当定义了多个类的时候,可能会发生类名的重复问题。

在java中采用包机制处理开发者定义的类名冲突问题。

怎么使用java的包机制呢?

  1. 使用package 关键字。
  2. package 包名。

问题:

  1. javac PackDemo1.java编译没有问题。
  2. java PackDemo1 运行出错。

错误原因分析:

在当前目录下找不到有pack目录,更加找不到pack目录下面的PackageDemo1.java文件。

解决办法:

  1. 自己在当前目录下新建一个pack目录。
  2. 执行Java pagk.PackageDemo1命令。(包其实就是文件夹).

存在的问题:使用包机制的话,我们是否每次都要自己创建一个文件夹呢?

解决:

在编译的时候则可以指定类文件存放的文件夹了。

javac -d . PackageDemo1.java    -d 后面跟着就是包名,指定包存放的路径。

包的优点

  1. 防止类文件冲突。
  2. 使源文件与类文件分离,便已软件最终发布。

注意细节

  1. 一个java类只能定义在一个包中。
  2. 包语句肯定是描述类的第一条语句。

包机制引发的问题

有了包之后访问类每次都需要把包名和类名写全。

解决:使用import语句。

格式 import 包名.类名 ;

注意细节:

  1. 如果想使用一个包中的许多类时,这时不需要多条的导入语句,使用 “*”号通配符代表所有的类。
  2. 使用*时不能导入包中的子类包的class文件。
  3. import语句可以是多条.

访问修饰符

访问修饰符是用来控制类、属性、方法的可见性的关键字称之为访问修饰符。

  1. public 一个类中,同一包中,子类中,不同包中
  2. protected  一个类中,同一包中,子类中
  3. default 一个类中,同一包中
  4. private 一个类中
  1. (修饰类成员)类成员

    1. 成员使用private修饰只在本类中使用。
    2. 如果一个成员没有使用任何修饰符,就是default,该成员可以被包中的其
    3. 他类访问。
    4. protected成员被protected修饰可以被包中其他类访问,并且位于不同
    5. 包中的子类也可以访问。
    6. public修饰的成员可以被所有类访问。
  2. (修饰类)类
    1. 类只有两种public和默认(成员内部类可以使用private))
    2. 父类不可以是private和protected,子类无法继承
    3. public类可以被所有类访问
    4. 默认类只能被同一个包中的类访问

Jar包

1:jar就是打包文件

jar文件时一种打包文件java active File,与zip兼容,称之为jar包

开发了很多类,需要将类提供给别人使用,通常以jar包形式提供.当项目写完之后,需要及将class字节码文件打包部署给客户。如何打包?可以使用jar命令.

2:jar命令

1:jar工具存放于jdk的bin目录中(jar.exe)

2:jar工具:主要用于对class文件进行打包(压缩)

3:dos中输入jar查看帮助

3:案例使用jar命令
将day10中的cn文件打包为名字为test.jar文件(cn 文件是使用javac -d 编译带包的class文件夹)

jar cvf test.jar cn

详细命令:

1:jar cf test.jar cn 在当前目录生成test.jar 文件,没有显示执行过程

2:jar cvf test.jar cn 显示打包中的详细信息

3:jar tf test.jar  显示jar文件中包含的所有目录和文件名

4:jar tvf test.jar 显示jar文件中包含的所有目录和文件名大小,创建时间详

细信息

5:jar xf test.jar  解压test.jar到当前目录,不显示信息

6:jar xvf test.jar 解压test.jar到当前目录,显示详细信息

7:可以使用WinRaR进行jar解压

8;将两个类文件归档到一个名为 test2.jar 的归档文件中:

jar cvf test2.jar Demo3.class Demo4.class

9:重定向

1:tvf可以查看jar文件内容,jar文件大,包含内容多,dos看不全。

2:查看jdk中的rt.jar 文件 jar tvf rt.jar

3:jar tvf rt.jar>d:\rt.txt

模板设计.

设计模式就是为了解决某类事情提出的解决方法。

案例:计算一段程序的执行时间

存在问题:

  1. 计算的程序的可变的。
  2. 把会改变的程序抽取出来单独做一个方法。
  3. 但是该方法不能确定运行的代码,声明为抽象的方法。
  4. 创建实现类继承并实现父类的未实现的函数。
  5. 为了避免子类重写父类的模版代码,需要将模版代码修饰为final

案例二:炒菜做饭

时间: 2024-10-25 17:14:00

day09面向对象-的相关文章

python学习 面向对象封装

from collectoins import namedtuplePoint=namedtuple('point',['x','y'])t1=Point(1,2)print(t1.x)print(t1.y)没有方法的类属性不会发生变化    定义简单 不能改变面向对象封装私有属性!!!私有方法!!!用装饰器描述的几个方法@property !!!@classmethod!!@staticmethod! 封装:class Teacher:     def __init__(self,name,p

python—面向对象的封装

封装 私有属性 class Teacher: __identifier = 'Teacher' #私有静态属性 def __init__(self,name,pwd) self.name = name self.__pwd = pwd #私有属性 内部使用,外部不能使用 def pwd(self): print(self.__pwd) alex = Teacher('alex','3714') alex.pwd() class Teacher: __identifier = 'Teacher'

python学习_day26_面向对象之封装

1.私有属性 (1)动态属性 在python中用双下划线开头的方式将属性隐藏起来.类中所有双下划线开头的名称,如__x都会自动变形成:_类名__x的形式.这种自动变形的特点是: a.类中定义的__x只能在内部使用,如self.__x,引用的就是变形的结果.b.这种变形其实正是针对外部的变形,在外部是无法通过__x这个名字访问到的.c.在子类定义的__x不会覆盖在父类定义的__x,因为子类中变形成了:_子类名__x,而父类中变形成了:_父类名__x,即双下滑线开头的属性在继承给子类时,子类是无法覆

python面向对象知识点疏理

面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例.class 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写. 实例变量:定义在方法中的变量,只作用于当前实例的类. 继承:即一个派生类(de

php学习笔记 面向对象中[接口]与[多态性]的应用

代码如下: <?php /* 接口技术 * * 接口是一种特殊的抽象类,抽象类又是一种特殊的类 * * 接口和抽象类是一样的作用 * * 因为在PHP是单继承的,如果使用抽象类,子类实现抽象类就不能再去继承其他的类了 * * 如果既想实现一些规范,又想继承其他类.就要使用接口. * * 接口和抽象类的对比 * * 1.作用相同,都不能创建对象,都需要子类去实现 * * 2.接口的声明和抽象类不一样 * * 3.接口被实现方式不一样 * * 4.接口中的所有方法必须是抽象方法,只能声明抽象方法(不

php面向对象

面向对象 什么是面向对象? 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程 序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性.灵活性和扩展性.为了实现整体 运算,每个对象都能够接收信息.处理数据和向其它对象发送信息. 什么是面向对象编程呢? 把每个独立的功能模块抽象成类形成 对象,由多个对象组成这个系统,这些对象之间都能够接收信息.处理数据和向其它对象

面向对象注意事项

在面向对象中,有实例变量和类变量,实例变量为类对象的实例成员,而类变量不仅类可以直接调用,而且类的对象也可以调用.类对象可以对实例变量进行添加.修改.删除操作等... 下面就用个示例来做参考: #!/usr/bin/env python # -*- coding:utf-8 -*- class PersonInfo(object): commity_data = 123 def __init__(self,name,age): self.name = name self.age = age de

java面向对象:面向对象的思想和概述

1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一种更符合我们思想习惯的思想 B:可以将复杂的事情简单化 C:将我们从执行者变成了指挥者 开发,设计,特征 面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情. 面向对象设计 其实就是在管理和维护对象之间的关系. 面向对象特征 封装(encapsulation) 继承(inheritance) 多态(polymorphism

6 面向对象之类和对象

1 面向对象和面向过程的区别 两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 区别: 1)编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类.属性及其方法,然后通过实例化类.执行方法来完成功能. 2)封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能. 3)面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显. 2 类和对象 对象:客观存在的实体(一个具体的