javaSE中的包,继承
一、包
包
(package) 是组织类的一种方式.
使用包的主要目的是保证类的唯一性
1.1、导入java包中的 一个类
import:导入包中的类
package:“包”,指类所在的包。意思就是这里面包含了类。
import java.util.Arrays;//
public class TestDome {
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
System.out.println(Arrays.toString(array));
}
}
当我们用Java中的方法时,比如toString()方法,就要导入 import java.util.Arrays这个类
import :导入包中的一个类。
java.util:这是一个 包。
Arrays :这是一个类。
有时候也看见一些 写法 import java.util.*
java中import 和C语言中include类似,import是导入一个 类,include是导入所有的.h文件
不同的包里可能相同的类
但是这种写法并不好,建议还是全部写完,会出现下面的请况,所以建议写完
如果不写完,那就要像下面这样写
1.2、将类放在包中
基本规则:
在文件的最上方加上一个 package 语句指定该代码在哪个包中.
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.www)。
包名要和代码路径相匹配. 例如创建 com.bit.www 的包, 那么会存在一个对应的路径 com/bit/www 来存储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中
注意:包的名字必须是小写
接下来就可以在包里面创建类了
1.3、静态导入
1.3、包的访问权限
我们已经学了public和private
public:在哪里都可以使用
private:只能在同一个类里面使用
包的访问权限:只能在当前包中使用
int a = 10;前面没有修饰,默认是包访问权限
常见的系统包:
- java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
- java.lang.reflect:java 反射编程包;
- java.net:进行网络编程开发包。
- java.sql:进行数据库开发的支持包。
- java.util:是java提供的工具程序包。(集合类等) 非常重要
- java.io:I/O编程开发包
二、继承(extends)
代码中创建的类, 主要是为了抽象现实中的一些事物(包含属性和方法).
有的时候客观事物之间就存在一些关联关系, 那么在表示成类和对象的时候也会存在一定的关联
下面我们创建两个动物鸟和狗
class Dog{
public int age;
public String name;
public void eat(){
System.out.println("吃饭");
}
}
class Bird{
public String wing;
public int age;
public String name;
public void eat(){
System.out.println("吃饭");
}
public void fly(){
System.out.println("飞翔");
}
}
public class Test1 {
public static void main(String[] args) {
}
}
我们看见鸟和狗都有名字和年龄,都会吃,那我们将他们共有的特性给提出来
extends::就是继承的意思
Animal我们就称为父类或者基类或者超类
Dog和Bird:称为子类或者派生类
继承 就是将子类中共有的特性抽取出来,子类就继承了父类的普通成员和普通方法
2.1、基本语法
class Dog extends Animal{
}
class 子类 extends 父类{
}
2.2、public和private
public:子类会继承父类的所有 public 的字段和方法
private:对于父类的 private 的字段和方法, 子类中是无法访问的;
2.3、Java 中一个子类只能继承一个父类 (而C++/Python等语言支持多继承)
2.4、子类的实例中, 也包含着父类的实例. 可以使用 super 关键字得到父类实例的引用
super关键字的使用方法
当父类和子类有同名的属性的时候
优先访问自己的属性,除非用super来访问父类的属性
2.5、protected 关键字
刚才我们发现, 如果把字段设为 private, 子类不能访问. 但是设成 public, 又违背了我们 “封装” 的初衷.
两全其美的办法就是 protected 关键字.
对于类的调用者来说, protected 修饰的字段和方法是不能访问的
对于类的 子类 和 同一个包的其他类 来说, protected 修饰的字段和方法是可以访问的
在子类构造方法中super()必须放在子类构造方法中的第一行
super:不能出现在静态方法中
常见的用法:
1、super调用父类的构造方法
2、super调用父类的成员
3、super调用父类的方法
小结: Java 中对于字段和方法共有四种访问权限
private: 类内部能访问, 类外部不能访问
默认(也叫包访问权限default): 类内部能访问, 同一个包中的类可以访问, 其他类不能访问.
protected: 类内部能访问, 子类和同一个包中的类可以访问, 其他类不能访问.
public : 类内部和类的调用者都能访问
对于更复杂的继承关系:
这种继承就太复杂了,建议继承不要超过三层。
2.3、final关键字
final修饰的类不能被继承
final关键字
super和this的区别: