博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
package,继承,访问修饰符
阅读量:4496 次
发布时间:2019-06-08

本文共 3122 字,大约阅读时间需要 10 分钟。

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;为例。

1 java.util.*;  //导入java.util下所有的类2 3 java.sql.Date;//导入java.sql下的Date类

1.3.2静态导入

静态导入,在jdk1.5后开出现的。当类中的属性和方法都是静态的时候可以使用。如下

1 package cn.qd01;2 public class Calc{3     public static float PI = 3.14f;4     5     public static int add(int a,int b){6         return a+b;7     }8 }

 

1 package cn.qd02; 2  3 // import cn.bd.Calc; 4 // 静态导入 5 import static cn.qd.Calc.*; 6 public class Test01{ 7     public static void main(String[] args){ 8         System.out.println(PI); 9         System.out.println(add(1,2));10     }11 }

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继承于BB继承于AC具有A的特性和行为。

2.1super

super关键字表示父类对象,只是一个关键字,里面没有引用。

super关键字用法:

【1】访问父类构造方法

1 public Dog(String name,int weight,int health,String stain){2         super(name,weight,health);3         this.setStrain(strain);4 }

super调用构造方法时,必须写在构造方法有效代码的第一句。

【2】调用父类非私有属性

1 public class Fruit{2     float price;3 }
1 public class Apple extends Fruit{ 2      3     public void showInfo(){ 4         // 不推荐使用 5         //System.out.println("价格:"+price); 6         //System.out.println("价格:"+this.price); 7         // 当需要访问父类的属性时,优先使用super 8         System.out.println("价格:"+super.price); 9     }10     11 }

 

【3】访问父类非私有方法

1 public void print(){2         /*3         System.out.print("我的昵称"+super.getName());4         System.out.print(",健康值"+super.getHealth());5         System.out.print(",体重"+super.getWeigh());6         */7         super.showInfo();8         System.out.println(",我是一只"+this.getStrain());9     }

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)

方法重写建立在继承基础没有继承,就没有重写!

方法重写,分为部分重写和全部重写,可视个人情况不同选择。

 

部分重写

 

1 public void showInfo(){2         super.showInfo();3         System.out.println("我是一只"+this.getStrain());4     }

 

全部重写

1 public void showInfo(){2         System.out.println("--"+super.getName()+"--");3         System.out.println("健康值:"+super.getHealth());4         System.out.println("体重:"+super.getWeight());5         System.out.println("品种:"+this.getStrain());6     }

重写规则

[1]方法名称相同

[2]参数列表相同

[3]子类的访问权限一定 >= 父类访问权限

[4]返回值和父类相同或者是其子类,如下。

 

1 public Pet create(){2         Pet pet = new Pet();3         return pet;4 }

 

1 public Dog create(){2         Dog dog = new Dog();3         return dog;4 }

 

转载于:https://www.cnblogs.com/qq308015824/p/10753413.html

你可能感兴趣的文章
JavaScript利用数组原型,添加方法实现遍历多维数组每一个元素
查看>>
ASP.NET生成缩略图
查看>>
“NASA”计划背后_阿里巴巴大数据系统架构概述
查看>>
oracle 查询树结构节点下的数量
查看>>
小练习
查看>>
px4的CMakelists.txt阅读
查看>>
linux-usb软件系统架构
查看>>
MySQL基础
查看>>
render Target sample in UI
查看>>
[转载]Linux用户管理全攻略(五)
查看>>
Django基础知识
查看>>
【python之路7】python基本数据类型(一)
查看>>
win7 实用
查看>>
Entity Framework Core 导航属性 加载数据
查看>>
String中的equals方法解析 jdk1.7
查看>>
Block详解
查看>>
Luogu P2467 [SDOI2010]地精部落 | 神奇的dp
查看>>
不可变类小结
查看>>
syslog-ng应用详解
查看>>
关于类加载器
查看>>