包(package)以及面向对象三个基本特征(继承)的介绍
1.包(package)
包(package) 用于管理程序中的类,主要用于解决类的同名问题。包也可以看成一个目录。
包的作用
[1] 防止命名冲突。
[2] 允许类组成一个单元(模块),便于管理和维护。
[3] 更好的保护类、属性和方法 。
1.1 如何定义包
使用package进行定义,应放在源文件有效代码的第一句。// package 路径
包的命名原则:始终保持类的全路径唯一。
规范:
(1)包名由小写字母组成,不能以圆点开头或结尾。(圆点为包的分隔符)。
(2)包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:package net.javagroup.xx
(3)包名后续部分依不同机构内部的规范不同而不同如:package net.javagroup.project1.projectname.xx
package test.newtest;
public class Test{
public static void main (String[] args){
System.out.println("Hellow");
}
}
当编译带包的源文件时写法是:javac -d 目的地 源文件
编译完成后Test字节码文件的路径是 test.newtest.Test 。
1.2 如何导入包
使用import进行导入操作,告知该类需要的其他类在哪个路径。
使用方法:(1)import test.newtest.Test // 导入test.newtest目录下的Test类。
(2)import test.newtest.*// 导入test.newtest目录下的所有类。
1.3 jvm提供的一些包
1.4 静态导入
在JDK1.5以后,可以导入类中的静态变量和方法。
使用方法:import static 路径.路径下的类名*; 例如:import static cn.sxt01.Calc.*;
2.继承
为了提取两个类中公共的代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class)。继承于父类的类称为子类(sub class)。
2.1 访问修饰符
java中存在4类访问修饰符,分别是private、默认、protected、public。
(1)private:私有的,只能在本类可以访问。
(2)friendly:默认的,同包可访问,也称包访问权限。
(3)protected:受保护的, ,类可访问 ,同包可访问 。
(4)public:公共的,都可以访问。
2.2 java 继承的特性
(1) 单根性。在java中,一个类只能有一个直接父类。
(2)传递性。C继承于B,B继承于A,C具有A的特性和行为。
类B继承于类A,使用关键字extends,B拥有了A中非私有的属性和方法。其中不能被继承的父类成员有:
(1)父类中的private成员;
(2)子类与父类不在同一个包,使用了默认访问权限的成员;
(3)父类中的构造方法。
public class Person{
String name;
int age;
public void showInfo(){
System.out.println("姓名:"+name);
System.out.println(",年龄:"+age);
}
} //父类
public class Student extends Person{ } //子类,使用关键字extends进行定义
public class Test01{
public static void main(String[] args){
Student s = new Student();
s.name = "张三";
s.age = 20;
s.showInfo();
}
}//当需要使用多个类时,可以使用继承,提取多个类中共有的部分,从而达到简化代码的效果。
2.3 super关键字
super关键字表示父类对象,只是一个关键字,无引用的效果。
super的作用:
(1)super访问父类构造方法
public Dog(String name,int health,int love,String strain){
super(name,health,love);
this.setStrain(strain);
}
(2)super调用父类的非私有属性(注意:私有的属性不能用super访问。)
public class Fruit{
float price;
}
public class Apple extends Fruit{
public void showInfo(){
System.out.println("价格:"+super.price);
}
}
(3)super调用父类的非私有方法
public void print(){
super.showInfo();
System.out.println(",我是一只"+this.getStrain());
}
(*当子类中没有与父类同名的属性时,直接使用属性名或this.属性名也可以访问父类的非私有属性,但是访问速度相较于super.属性名会比较慢,不推荐使用)
2.4 方法的重写(overwrite/override)
当子类从父类继承过来的方法不能满足自身需要时,子类可以根据自身情况选择部分重写或者完全重写。
方法重写建立在继承的基础上,没有继承,就没有重写!
(1)部分重写
public void showInfo(){
super.showInfo();
System.out.println("我是一只"+this.getStrain()); //在从父类继承过来的方法的基础上添加新的需要。
}
(2)完全重写
public void showInfo(){
System.out.println("--"+super.getName()+"--");
System.out.println("健康值:"+super.getHealth());
System.out.println("亲密度:"+super.getLove());
System.out.println("品种:"+this.getStrain()); //对父类的方法进行完全重写
}
重写的规则
[1]方法名称相同。
[2]参数列表相同。
[3]子类的访问权限一定 >= 父类访问权限。
[4]返回值和父类相同或者是其子类。
包(package)以及面向对象三个基本特征(继承)的介绍的更多相关文章
- javascript面向对象(三):非构造函数的继承
本文来自阮一峰 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使用构造函数实现"继承" ...
- 面向对象之三个基本特征(javaScript)
1. 前言 2. 封装 3. 继承 4. 多态 5. 总结 1. 前言 了解过面向对象的同学应该都知道,面向对象三个基本特征是:封装.继承.多态,但是对于这三个词具体可能不太了解. 2. 封装 在说封 ...
- C++编程之面向对象的三个基本特征
面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...
- Java学习笔记三十一:Java 包(package)
Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...
- Java入门 - 面向对象 - 07.包(package)
原文地址:http://www.work100.net/training/java-package.html 更多教程:光束云 - 免费课程 包(package) 序号 文内章节 视频 1 概述 2 ...
- java中的面向对象的三大基本特征
转载,原文来自http://blog.sina.com.cn/s/blog_5f79a56a0100c6ig.html 众所周知,java中的面向对象的三大基本特征是:[封装].[继承].[多态] 一 ...
- 面向对象第二个特征-继承(Inheritance)
面向对象第二个特征-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java中的继承概述 1>.继承概述 多个类种存在相同属性和行为时,讲这 ...
- OOP三个基本特征:封装、继承、多态
面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...
- (转)-编写第一个ROS(创建工作空间workspace和功能包package)
原文网址:http://www.cnblogs.com/liuamin/p/5704281.html 刚接触ROS,学着写了第一个程序,怕以后忘记,就将其步骤记录下来.. 首先你必须保证你电脑已安装配 ...
随机推荐
- 大白话5分钟带你走进人工智能-第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归
第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归 上一节中我们讲解了L1和L2正则的概念,知道了L1和L2都会使不重要的维度权重下降得多,重要的维度权重下降得少,引入 ...
- python接口自动化(二十四)--unittest断言——中(详解)
简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...
- WebP 在减少图片体积和流量上的效果如何?MIP技术实践分享
作者 | Jackson 编辑 | 尾尾 不论是 PC 还是移动端,图片一直占据着页面流量的大头,在图片的大小和质量之间如何权衡,成为了长期困扰开发者们的问题.而 WebP 技术的出现,为解决该问题提 ...
- shell简明教程
shell的格式 shell可以在直接在命令行下输入,也可以保存成shell脚本文件运行.当命令简单并且不需要重复使用,在命令行输入直接执行即可,否则就写成脚本.shell脚本默认文件扩展名为.sh. ...
- 读书笔记:深入理解java虚拟机(二)创建对象的时候需要访问哪几块内存
@TOC 对象在内存中如何储存 对象访问在java语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会涉及到java栈,java堆,方法去三个最重要的内存区域的关联关系,比如下面这段代码: ...
- java游戏开发杂谈 - 游戏编程浅析
每个游戏,你所看到的它的一切,都是计算机画出来的! 地图是画出来,人物是画出来的,树木建筑是画出来的,菜单按钮是画出来的,滚动的文字.闪烁的图标.云雾烟火,都是画出来的. 游戏编程,所要做的,就是控制 ...
- 游戏AI之模糊逻辑(4)
目录 人类的逻辑 模糊变量 模糊集合 模糊规则 模糊推理 去模糊化 库博方法 结语 if(condition) then dosomething... 这次主要围绕的是游戏AI该如何模仿人类地判断条件 ...
- MaxCompute 2.0复杂数据类型之array
1. 含义 类似于Java中的array.有序.可重复. 2. 场景 什么样的数据,适合使用array类型来存储呢?这里列举了几个我在开发中实际用到的场景. 2.1 标签类的数据 为什么说标签类数据适 ...
- java之servlet入门操作教程一续
本节主要是在java之servlet入门操作教程一 的基础上使用myeclipse实现自动部署的功能 准备: java之servlet入门操作教程一 中完成myFirstServlet项目的创建: ...
- Python动态绑定属性slots的使用
当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.废话不多说,我们看一个例子: class Person(object): pass ...