黑马程序员——继承


------- android培训java培训、期待与您交流! ----------

继承的好处
 继承的出现,提高了代码的复用性。
 继承的出现,让类与类之间产生了关系,extends来表示,这个关系的出现,就有了面向对象的第三个特点多态。

继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构。
  要了解这个体系结构中最共性的内容,就看最顶层的类。
  要使用这个体系的功能,就用最底层的类创建对象。

特点
  java只支持单继承,多继承容易带来安全隐患:当多个父类中存在相同方法,功能内容不同时,子类不确定运行哪一个。
  java支持多重(层)继承。
注意
  1:子类可以直接访问父类中的非私有的属性和行为。
  2:不要仅为了获取其他类中部分功能而去继承。类与类之间要有所属( " is a " )关系,xx是xx的一种。 A如果继承B,那么就可以说A是B的一种。

 

继承后子父类之间成员的关系:

1、变量

class Fu
{
      int num1 = 5;
}

class Zi extends Fu
{	
      int num1 = 20;
}
public void show() 
{           
      int num1 = 30;
      System.out.println("num1="+num1);
      //当局部变量和成员变量重名的时候用this来区分
       System.out.println("this num1="+this.num1);
      //当子类和父类出现了同名变量,用super来区分
       System.out.println("father num1="+super.num1);
 }


 

在一个类中如果方法中的局部变量和方法外的成员变量重名,那么如果在方法内输出这变量,就是方法自己的变量里的值。想要区分要用this,加上this.就是输出成员变量的值。加上super.就是输出父类里变量的值

 

this和super的区别:

this代表本类对象的引用    

super本类对象父类的引用  

this可以用于区分局部变量和成员变量同名的情况    

super可以用于区分子类和父类成员变量同名的情况

 

2、成员方法 

 子类中存在和父类成员方法同名的这种现象,叫做重写,复写,覆盖。

注意:

1,子类覆盖父类,必须保证子类权限大于等于父类权限才可以覆盖,否则编译失败

2,静态只能覆盖静态

 

 

重写和重载的区别:重载的特点:    在同一类中。    方法名相同,参数列表不同。重写的特点:   在子父类中 ,要有继承关系。    方法的声明相同。(方法名和参数列表都相同)    

 

在对子类对象进行初始化时,父类的构造函数也会运行。

子类的所有构造函数第一行有一条隐式语句:super();

 

子类一定要访问父类中的构造函数,因为父类的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。

所以子类在对象初始化时,要先访问父类的构造函数。

如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定

 

注意:super语句一定定义在子类构造函数的第一行

子类的实例化过程

结论:子类所有的构造函数默认都会访问父类中空参数的构造函数。因为子类每一个构造函数内的第一行都有一句隐式super()

 

 

final

 

作为一个修饰符 可以修饰类、函数、变量。

1,被fainl修饰的类不能被继承。  

2,被final修饰的成员方法不能被重写。  

3,final可以用来修饰变量:被final修饰的变量为常量,值不能被修改。    

常量的命名规范:要求大写。     final int PI = 3.14;

4,内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值