第九篇

继承:java继承是定义一种的新的类型,从已有的类中吸收成员变量和方法,新的类型可以添加新的方法和成员变量。

这种方式可以提高代码的复用性,缩短开发周期,减少开发费用。

构造器:子类不能继承父类的构造器,使用super(有参传参)只能调用父类的构造器。

子类中的构造器,至少有一个调用了父类的构造器。

super(有参传参)与this(有参传参),不能共存。而且只能放在首行首句。

方法的重写:子类可以重新编写继承父类的方法。

 (1)方法名相同,参数列表相同

 (2)返回值类型可以相同,也可以是父类方法的返回值类型的子类型

 (3)修饰词可以不变,或者可以比父类的修饰权限更大,父类型的变量引用子类型的对象

 

变量能调用的方法与成员变量

方法:

编译期: 变量只能调用出本类型中的方法

运行期: 变量调用出方法执行逻辑与对象的类型有关

成员变量:变量调用出的成员变量一定是本类型中的成员变量

如:Person p = new Student();

   p.name------>super.name

   p.age ------>super.age

 //p.score---->编译错误,p类型中没有成员变量score

Object:是所有引用类型的顶级父类,系统都会默认使引用类型extends Object.

此类中提供了常用的方法:

1:toString():在Object中,返回的是类全名@HashCode值, 即对象的内存堆中的位置信息

类有类名和类全名之分

类名:即最短的名称

类全名:从包名开始写的名称

如:  String 是类名

    java.lang.String是类全名                 

此方法会在输出变量时,或引用变量进行拼接时默认调用。

而查看地址信息,通常没有必要,我们通常要查看的是对象的成员变量信息

因此我们都需要重写toString()方法,用于查看对象的详情

格式:

  "[成员变量1="+成员变量1+",成员变量2="+成员变量2+"]"

2:equals(Object obj)

  Object类型中的此方法中的逻辑是比较调用者this与形参obj的地址信息是否相等。

  简单说成:比较this与obj是不是同一个对象 

  所以在定义类型时,继承过来的equals方法 我们要重写。

  重写规则

   (1)   查看传进来的obj是不是null

     

if(obj==null){
            return false;
         }

   (2): 查看传进来的obj是不是this.

        

if(obj==this){
           return true;
         }

   (3)   查看穿进来的obj是不是本类型

      

if(obj.getClass()!=this.getClass()){
           return false;
        }

        可以改成

 

if(!(obj instanceof Person)){
           return false;
        }

instanceof关键字:作用是判断引用变量指向的对象是否属于某一类型

语法:boolean f =  变量名  instanceof  类型名     

package: 包. 

作用:用于管理源文件,区分类全名

命名规则:域名后缀.域名.项目名.模块名

声明位置:在源文件的首行首句。

 

类全名:从包开始写起的名称

常用的包:

  java.lang.*,因为里面的类型非常常用。因此不需要导包

  java.util.*,此包下封装了很多常用的工具类

  java.io.*,此包下封装了io流的类型

  java.net.*,此包下封装很多关于网络的多种类型

import: 导包关键字:在class之上,package之下。

用于声明类的类全名,在逻辑中就可以使用短的类名。

优点: 可以减少代码的书写。  

访问权限控制修饰词

    private,protected,public,默认的(default)

修饰类时:

外部类:可以使用public和默认的

内部类:可以使用public,protected,默认的,private

 

修饰成员变量:四个都可以进行修饰,但可见性不一样

           本类中   同包下   不同包子类中   其他   

public      true     true      true          true

protected   true    true      true

default     true    true

private     true

在实际开发中,成员变量要尽可能的设置成不可见,好处是提高代码的安全性。即用private修饰

--------------------------------------------------------------------

为了在其他类中可以对成员变量进行重新设置值或者获取值,我们可以定义相应成员变量的共有方法来进行操作。

public void setName(String name){
       this.name = name;//修饰成员变量的值
  }
  public  String  getName(){
        return name;
  }

修饰方法:与修饰成员变量的可见性一致。

方法的重写:子类不能重写父类的私有方法 

修饰词final:最终的,最后的

(1)修饰类:被final修饰的,不能再有子类了。        

(2)a.修饰成员变量:可以直接初始化,也可以在构造器中初始化,不能再其他              任何地方再次赋值

 b.修饰局部变量:只能初始化一次。  

(3)修饰方法:被final修饰的方法,不能再子类中重写     

 常量:因为常量是一些特殊值,我们可以定义成final, public,static进行修饰。