Java学习第九天

  java

(package) 用于管理程序中的类,主要用于解决类的同名问题。包能够看出目录。编程

 

包的做用网络

[1] 防止命名冲突。dom

[2] 容许类组成一个单元(模块),便于管理和维护jvm

[3] 更好的保护类、属性和方法 ide

 

   包命名规范工具

包命名原则:始终保持类的全路径惟一。ui

 

规范:this

[1]包名由小写字母组成,不能以圆点开头或结尾。圆的有特殊意义——包分隔符spa

 

[2]包名以前最好加上惟一的前缀,一般使用组织倒置的网络域名。如:域名javagroup.net

package net.javagroup.xx

[3]包名后续部分依不一样机构内部的规范不一样而不一样

package net.javagroup.project1.projectname.xx

 

     导包

import 用于导包,告诉类须要的其余类在什么位置!

    1.   jvm提供的包

包名

描述

java.lang/语言包

系统默认导入,String类保存在这个包中,因此咱们在使用String时不须要导包

java.util

工具包,一些经常使用的类库,Scanner,Date,Arrays

java.io

输入输出处理,文件的读写等

java.net

网络编程

java.math

数学计算.Math.random

java.awt(C)

这个包中的类用于构建和管理应用程序的图形用户界面

 

    1.   静态导入

若是一个类中定义的属性和方法都是静态时,能够考虑使用静态导入。jdk1.5+ 出现。

package cn.sxt01;

public class Calc{

    public static float PI = 3.14f;

   

    public static int add(int a,int b){

       return a+b;

    }

}

package cn.sxt02;

 

// import cn.sxt01.Calc;

// 静态导入

import static cn.sxt01.Calc.*;

public class Test01{

    public static void main(String[] args){

       System.out.println(PI);

       System.out.println(add(1,2));

    }

}

 

思考:若是一个类中还有实例成员,能不能用静态导入?

 

    1.   继承
      1.      为何要使用继承?

为了提取两个类中公共的代码,能够使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class)。继承于父类的类称为子类(sub class).

 

java继承的特性

[1] 单根性。在java中,一个类只能有一个直接父类。

[2] 传递性。C继承于BB继承于AC具备A的特性和行为。

 

 

B继承于类A,使用关键字extendsB拥有了A中非私有的属性和方法

 

public class Person{

    String name;

    int age;

   

    public void showInfo(){

       System.out.println("姓名:"+name);

       System.out.println(",年龄:"+age);

    }

}

public class Student extends Person{

   

}

public class Test01{

    public static void main(String[] args){

       Student s = new Student();

       s.name = "张三";

       s.age = 20;

       s.showInfo();

    }

}

若是Person中定义了private 属性count

 

    1.   Super

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

 

[1]super访问父类构造方法

public Dog(String name,int health,int love,String strain){

       /*

       this.setName(name);

       this.setHealth(health);

       this.setLove(love);

       */

       super(name,health,love);

       this.setStrain(strain);

      

    }

 

super调用父类构造方法时,必须写到构造方法有效代码第一句

 

[2] super调用父类的非私有属性

super能够访问父类的非私有属性。私有的属性不能用super访问。

 

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);

    }

   

}

 

变量隐藏(C)

当子类定义了一个和父类同名的属性时,在子类中优先访问子类的属性,若是要访问父类属性必定要加super

public class Fruit{

    float price;

   

    private String color;

   

    int weight = 100;

}

public class Apple extends Fruit{

   

    int weight = 200;

   

    public void showInfo(){

       // 不推荐使用

       //System.out.println("价格:"+price);

       //System.out.println("价格:"+this.price);

       // [1]当须要访问父类的属性时,优先使用super

       System.out.println("价格:"+super.price);

      

       // [2]不能访问父类的私有属性

       // System.out.println("颜色:"+super.color);

      

       // [3] 访问和父类同名的变量weight

       System.out.println("重量:"+weight);

       System.out.println("重量:"+this.weight);

       System.out.println("重量:"+super.weight);

    }

   

}

 

一句话:若是要访问父类属性,经过super;若是要访问子类属性,经过this.

 

 

    1.   子类继承父类的资源

 

    1.   访问修饰符

java中存在4类访问修饰符,分别是private、默认、protectedpublic

 

修饰符

本类

同包子类

同包其余类

不一样包子类

不一样包其余类

private

默认

protected

public

 

private:私有的,只能在本类能够访问。

friendly:默认的,同包可访问,也称包访问权限。

protected:受保护的, ①子类可访问 ②同包可访问

public:公共的,均可以访问

 

    1.   继承关系的初始化顺序

 

继承关系内存图

 

    1.   方法的重写

当子类从父类继承过来的方法不能知足自身须要时,子类能够根据自身状况进行方法重写(overwrite/override)

方法重写创建在继承的基础上,没有继承,就没有重写!

 

子类根据自身状况,能够选择部分重写和彻底重写。

 

部分重写

public void showInfo(){

       super.showInfo();

       System.out.println("我是一只"+this.getStrain());

    }

 

彻底重写
 

 

重写的规则

[1]方法名称相同

[2]参数列表相同

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

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

相关文章
相关标签/搜索