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. 1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序

    1:访问修饰符 private     同类中 默认        同类        同包 protect    同类         同包      子类 public     同类        ...

  2. java:包、继承,访问修饰符

    包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [3] 更好的保护类.属 ...

  3. 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

    1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...

  4. Java继承和访问修饰符

    继承 概念:为了提取两个类中公共代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class).继承于父类的类称为子类(sub class). 关键字     ext ...

  5. C#继承机制 继承与访问修饰符

    继承与访问修饰符 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性.类的继承中有四个访问修饰符: public protected internal private.使用这些访问修饰符可指定 ...

  6. C#面向对象 (访问修饰符、封装、继承、多态)

    先看一下创建一个新项目时的基本格式 using System; using System.Collections.Generic; using System.Linq; //引用的命名空间 using ...

  7. JAVA知识总结(三):继承和访问修饰符

    今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下.这一部分还是非常重要的,需要仔细思考. 继承 继承:它是一种类与类之间的关系,通过使用已存在的类作为基础来建立新 ...

  8. Java访问修饰符和三大特征(封装,继承和多态)

    一.访问修饰符基本介绍: java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 1.公开级别:用public修饰,对外公开2.受保护级别:用protected修饰,对子 ...

  9. Scala访问修饰符(四)

    Scala 访问修饰符基本和Java的一样,分别有:private,protected,public. 如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public. Scala ...

随机推荐

  1. scrapy相关 通过设置 FEED_EXPORT_ENCODING 解决 unicode 中文写入json文件出现`\uXXXX`

    0.问题现象 爬取 item: 2017-10-16 18:17:33 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.hu ...

  2. Linux下如何查看系统启动时间和运行时间以及安装时间

    1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00 2.查看/proc/uptime文件计算 ...

  3. IdentityServer4 记录

    IdentityServer4 文档 https://www.cnblogs.com/edisonchou/p/identityserver4_foundation_and_quickstart_01 ...

  4. Android中的Application类在应用程序中的应用

    Application类 每次应用程序运行时,应用程序的Application类都保持实例化状态(都会持有该Application实例).与Activity不同的是,配置改变并不会导致应用程序重启.在 ...

  5. (转)RBAC权限模型——项目实战

    一.前言 权限一句话来理解就是对资源的控制,对web应用来说就是对url的控制,关于权限可以毫不客气的说几乎每个系统都会包含,只不过不同系统关于权限的应用复杂程序不一样而已,现在我们在用的权限模型基本 ...

  6. Do-Now—团队Scrum 冲刺博客二

    各个成员今日完成的任务 侯泽洋:完成奖励页面设计,完成奖励从云端拉取到本地:完成奖励从云端拉取到本地 周亚杰:完成个人中心页面设计,登录界面美化:注册登录界面美化 王志伟:完成倒计时功能,并对页面进行 ...

  7. git 从远程仓库获取所有分支

    git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}& ...

  8. Thinkphp3.2.3加载外部类并调用类里面的方法 获取token

    例如:加载七牛上传类(thinkphp自带的) $qiniu = new \Think\Upload\Driver\Qiniu\QiniuStorage($setting['driverConfig' ...

  9. NOIP-无线网路发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...

  10. Java_深度剖析ConcurrentHashMap

    本文基于Java 7的源码做剖析. ConcurrentHashMap的目的 多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用Hash ...