package,继承,访问修饰符
1.package
包(package),用于管理程序中的类,可用于处理类的同名问题。
1.1定义package的方法
package 包名;
package用于定义包,必须写在源文件有效代码的第一句。
1.2编译带有包的源文件
在控制台编译有包的源文件,javac -d 目的位置 源文件位置。如下

1.3.import导包
同一包中的其他类可以直接使用。
如果要使用不在同一个包中的类,需要用import导入。
import java.util.Scanner;//导入java.util下的Scanner类
1.3.1如果要使用到不同包中,但是名字相同的类要如何处理呢?以导入java.util.Date;和java.sql.Date;为例。
java.util.*; //导入java.util下所有的类 java.sql.Date;//导入java.sql下的Date类
1.3.2静态导入
静态导入,在jdk1.5后开出现的。当类中的属性和方法都是静态的时候可以使用。如下
package cn.qd01;
public class Calc{
public static float PI = 3.14f; public static int add(int a,int b){
return a+b;
}
}
package cn.qd02; // import cn.bd.Calc;
// 静态导入
import static cn.qd.Calc.*;
public class Test01{
public static void main(String[] args){
System.out.println(PI);
System.out.println(add(1,2));
}
}
2.继承
假如有两个类,dog类和cat类。它们都有相同的属性或方法,如String name,int weight等等。这时我们可以用继承,我们创建一个pet类,pet包含dog类和cat类相同的属性和类。让dog类和cat类继承pet类。
那么dog类和cat拥有pet类中的非私有的属性和方法。
这个公共的类称为父类(super class),继承于父类的类称为子类(sub class)。
java继承有两个特性:
1.单根性。在java中,一个类只能有一个直接父类。
2.传递性。C继承于B,B继承于A,C具有A的特性和行为。
2.1super
super关键字表示父类对象,只是一个关键字,里面没有引用。
super关键字用法:
【1】访问父类构造方法
public Dog(String name,int weight,int health,String stain){
super(name,weight,health);
this.setStrain(strain);
}
super调用构造方法时,必须写在构造方法有效代码的第一句。
【2】调用父类非私有属性
public class Fruit{
float price;
}
public class Apple extends Fruit{
public void showInfo(){
// 不推荐使用
//System.out.println("价格:"+price);
//System.out.println("价格:"+this.price);
// 当需要访问父类的属性时,优先使用super
System.out.println("价格:"+super.price);
}
}
【3】访问父类非私有方法
public void print(){
/*
System.out.print("我的昵称"+super.getName());
System.out.print(",健康值"+super.getHealth());
System.out.print(",体重"+super.getWeigh());
*/
super.showInfo();
System.out.println(",我是一只"+this.getStrain());
}
2.2子类继承父类的资源
以下情况是,父类不能被继承的成员
1.private成员
2.构造方法
3.子类和父类不在同一个包下,使用默认修饰符的成员
3.访问修饰符
访问修饰符共有4种,private,默认,protect,public.
|
修饰符 |
本类✘ |
同包子类 |
同包其他类 |
不同包子类 |
不同包其他类 |
|
private |
✔ |
✘ |
✘ |
✘ |
✘ |
|
默认 |
✔ |
✔ |
✔ |
✘ |
✘ |
|
protected |
✔ |
✔ |
✔ |
✔ |
✘ |
|
public |
✔ |
✔ |
✔ |
✔ |
✔ |
1.private:私有的,只能在本类可以访问。
2.friendly/default:默认的,同包可访问,也称包访问权限。
3.proteck:受保护的, ①子类可访问 ②同包可访问
4.pulic:公共的,都可以访问
4.继承关系的初始化顺序

继承关系内存图

5.方法的重写
当子类从父类继承过来的方法不能满足自身需要时,子类可以根据自身情况进行方法重写(overwrite/override)
方法重写建立在继承的基础上,没有继承,就没有重写!
方法重写,分为部分重写和全部重写,可视个人情况不同选择。
部分重写
public void showInfo(){
super.showInfo();
System.out.println("我是一只"+this.getStrain());
}
全部重写
public void showInfo(){
System.out.println("--"+super.getName()+"--");
System.out.println("健康值:"+super.getHealth());
System.out.println("体重:"+super.getWeight());
System.out.println("品种:"+this.getStrain());
}
重写的规则
[1]方法名称相同
[2]参数列表相同
[3]子类的访问权限一定 >= 父类访问权限
[4]返回值和父类相同或者是其子类,如下。
public Pet create(){
Pet pet = new Pet();
return pet;
}
public Dog create(){
Dog dog = new Dog();
return dog;
}
package,继承,访问修饰符的更多相关文章
- 1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序
1:访问修饰符 private 同类中 默认 同类 同包 protect 同类 同包 子类 public 同类 ...
- java:包、继承,访问修饰符
包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [3] 更好的保护类.属 ...
- 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)
1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...
- Java继承和访问修饰符
继承 概念:为了提取两个类中公共代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class).继承于父类的类称为子类(sub class). 关键字 ext ...
- C#继承机制 继承与访问修饰符
继承与访问修饰符 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性.类的继承中有四个访问修饰符: public protected internal private.使用这些访问修饰符可指定 ...
- C#面向对象 (访问修饰符、封装、继承、多态)
先看一下创建一个新项目时的基本格式 using System; using System.Collections.Generic; using System.Linq; //引用的命名空间 using ...
- JAVA知识总结(三):继承和访问修饰符
今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下.这一部分还是非常重要的,需要仔细思考. 继承 继承:它是一种类与类之间的关系,通过使用已存在的类作为基础来建立新 ...
- Java访问修饰符和三大特征(封装,继承和多态)
一.访问修饰符基本介绍: java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 1.公开级别:用public修饰,对外公开2.受保护级别:用protected修饰,对子 ...
- Scala访问修饰符(四)
Scala 访问修饰符基本和Java的一样,分别有:private,protected,public. 如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public. Scala ...
随机推荐
- 微信小程序--家庭记账本开发--04
界面的布局 在微信小程序开发过程中,界面的布局是十分重要的,无论是一个什么样的程序,界面的美观合理才能提供给客户一个较好的使用体验,就微信小程序布局自己看了许多小程序布局,自己将学习心得记录如下: 下 ...
- Codeforces 455A Boredom (线性DP)
<题目链接> 题目大意:给定一个序列,让你在其中挑选一些数,如果你选了x,那么你能够得到x分,但是该序列中所有等于x-1和x+1的元素将全部消失,问你最多能够得多少分. 解题分析:从小到大 ...
- Android-XML
Android-XML XML文件: <?xml version="1.0" encoding="utf-8"?> <books> &l ...
- loadrunner之java user脚本开发
脚本开发环境: loadrunner11.0 jdk1.6.32_x86_32 脚本开发 1.选择JavaVuser协议 2.配置java环境(Vuser--RunTime Settings) 3.开 ...
- 浅析uWSGI、uwsgi、wsgi
WSGI协议 首先弄清下面几个概念: WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web ...
- js估算一篇文章的阅读时长
每天早上上班在地铁里我都有看技术类文章以及实时新闻的习惯,偶尔会看到有些文章的开始部分会提醒我们这篇文章大概的阅读时长,我就在想这是怎么实现的,具体到前端开发中,又是如何实现的.今天在浏览Segmen ...
- Git 经常用到的命令
1.克隆master分支之外的分支: 首先克隆项目 1>Git clone git@192.168.0.201:frontend/mn.git 然后转换到克隆下来的文件夹 2>cd 文件名 ...
- Java 中 AOP —— 探讨其存在价值及实现方式对比
AOP 概述 Aspect-oriented programming(面向切面编程).最广为人知的面向侧面的程序设计语言是由施乐帕洛阿尔托研究中心 (施乐帕克 nb!)开发的AspectJ,该语言可以 ...
- 日期类的使用(java)-蓝桥杯
蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...
- Jmeter-----图形扩展监控
Jmeter----图形扩展监控 监听器中插件安装成功如下图: 安装步骤: 1. 下载JMeterPlugins-Extras与JMeterPlugins-Standard,解压缩后在他们各自的\l ...