继承

一、继承

       子类可以父类中继承一些成员变量,和方法。子类还可以添加自己独有的成员变量和方法。

       子类:也叫派生类        父类:也叫超类,基类

关键字extends,用于继承语法

         格式:
              public class subClass extends SuperClass{

}

继承中的构造器:

     子类不能继承父类的构造器,但是,子类中构造器可以调用父类的构造器

      语法:super(有参传参);

      作用:可以更好的给继承过来的成员变量赋值

     ps:子类中的构造器一定会有一个调用了父类的构造器

                    父类中如果没有无参构造器,子类需要显示调用父类构造器。如果父类中有无参构造器,子类中的构造器可能隐式调用了父类的无参构造器.即:隐藏了super()

super()与this()的区别

         相同点:都是调用构造器,而且必须方在首行首句。

         不同点:super()是调用父类的构造器   this()是调用本类中其他构造器

二、继承的特点

      (1)继承的传递性: 继承特征有传递特性,B类型继承了A类型的特征,C类型继承了B类型的特征。C类型也间接继承了A类型的特征。

       (2)单继承:一个子类只能继承一个父类。但是一个父类可以有多个子类

三、方法的重写:

        子类可以继承父类的方法,在继承时,我们可以在子类中编写与父类中的方法名相同,参数列表也相同的方法。这就是重写。

      (1)父子类关系,方法名相同,参数列表相同

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

父类型的变量可以引用子类型的对象

如:Animal a = new GoldFish();

    Animal类型的变量a引用了子类型GoldFish的对象 符合人类的思维方式:这条金鱼是动物

编译期绑定:在编译过程中,变量只能调出本类型中的方法

                   在编译期间,方法静态绑定到变量上

运行期绑定: 在运行过程中,真正执行的方法的逻辑与对象的类型有关系。简单来说:方法在运行期间,动态绑定到对象上

成员变量的调用与变量的类型有关系(与编译期和运行期无关)

四、Object

Object是所以引用类型的顶级父类,系统都会默认使引用类型继承Object

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

1、toString():

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

        此方法会在输出变量是,或引用变量进行拼接时默认调用。而查看地址信息,通常没有必要,我们通常要查看的是对象的成员变量信息。因此我们都需要重写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: 包.  
        作用:用于管理源文件,区分类全名
        命名规则:域名后缀.域名.项目名.模块名
        声明位置:在源文件的首行首句。

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

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

(1)修饰类,
          被final修饰的,不能再有子类了。         
(2)修饰成员变量
           可以直接初始化,也可以在构造器中初始化,不能再其他任何地方再次赋值
    修饰局部变量
           只能初始化一次。   
(3)修饰方法
       被final修饰的方法,不能再子类中重写      
 常量:
        因为常量是一些特殊值,我们可以定义成final, public,static进行修饰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值