final与继承

1,      单词:inherit:继承 ,resolve,决定 instance 实例 compound 复合的  polymorphism多态 region地区,地理 encryption加密

2,方法前面有数据类型,前面什么也没有,例如void int srraaa(){},默认包内有效

 *3instance method实例方法,对象方法,归到非静态的成员方法

 *类方法。也即静态方法

 *4

 *被表标注解的方法,jvm认为方法是重写父类或者是父类的父类中的方法 * */

5,作用域或者生命周期就近原则。

     /*

      * 本类的方法内找局部变量,如果找不到,进行第二种,本类中找本类的成员变量,找到就返回,

      * 如果,还没找到,就去父类中,找父类的成员变量(不能在父类的方法中找),找到就返回,

      * 如果,还找不到。如果,存在父类的父类,就找父类的父类的成员变量.....,直到将所有的父类走

      * 一遍为止。如果都找不到,就抛出异常,变量没定义。

      * 当本类的成员变量和局部变量与父类的成员变量重名的时候,默认情况下,本地变量会隐藏上一级的变量

      * 当本地局部变量与本类的成员变量重名的是时候,用this处理

      * 当本类的成员变量和父类的成员变量重名的时候,使用super来处理

      *

6,子类不能继承父类的构造方法

7,final关键字的用法

 * 1),修饰类,表示类不能被继承

 * 2),修饰变量表示变量变成常量,并且只能赋值一次(自定义常量)

 * 3,修饰成员方法,表示该成员方法不能被重写

 * final在方法里,可以放在局部变量前面

 * final修饰数组,面试题都是坑

 * 8,发生多态现象的前提

 * 1),必须有继承

 * 2)有方法重写

 * 3 )有父类引用指向子类对象

 * 9,多态情况下,成员的访问特点,

 * 1)访问成员变量的时候,成员变量必须要在父类中存在。编译看左边,运行看左边

 * 2)访问成员方法的时候,编译看左边,运行看右边

 * 3)访问静态方法的时候,编译看左边,运行看左边

 * 10,多态的弊端

 * 11,向下类型转换时,需要注意,类型一样要匹配

继承练习:

劳工 类型

 * 把劳工类,作为父类(超类) super class,基类base class

 * 继承的概念,

 * @author jerry

 *

 */

public class Labor{

     

     

      //成员变量

      private String name;

      private int age;

     

      public int i = 20;

     

     

     

     

     

     

      public Labor() {

           super();

           System.out.println("Labor()无参构造");

      }

     

     

 

 

 

      public Labor(int i) {

           super();

           this.i = i;

      }

 

 

 

 

 

      public String getName() {

           return name;

      }

 

 

 

      public void setName(String name) {

           this.name = name;

      }

 

 

 

      public int getAge() {

           return age;

      }

 

 

 

      public void setAge(int age) {

           this.age = age;

      }

 

 

 

      //构造方法和成员方法

      public void sleep(){

           System.out.println("sleep()");

      }

     

      /**

       * 子类可以继承父类中,非私有的成员(成员变量和成员方法)

       * private :不行 本类内部有效

       *  默认 default /friendly :包内有有效

       * public : 所有都有效

       * protected: 受保护的,从父类继承过来的,子类可以访问

       */

      protected void method1(){

           System.out.println("Labor#method1()");

      }

     

      public static void method2(){

           System.out.println("Labar#method2()");

      }

}

子类 老师 类 ,继承自Labor类型

 * @author jerry

 *

 */

public classTeacher extends Labor{

     

      /**

       * 既然是发生了继承关系,

       * 非私有的成员变量,已经包含在当前类中

       */

      //Cannot reduce the visibility of theinherited method from Labor

      @Override

      public void method1(){

          

           super.method1(); //调用父类原有的功能

          

           // 对父类原有的功能的 发扬过大

           this.setAge(20);

          

           System.out.println("Teacher#method1()");

      }

     

      public void show(){

          

           //show方法中调用method1(),此时应该调用的谁的方法?

           method1();

//        this.method1(); // 写不写this 都是一样的

//        method3();//编译错误,在所有类范围内都找不到该方法的签名

          

           method2();

      }

     

      //重写父类中的静态方法

      // instance method :实例方法 对象方法  归到 非静态的成员方法

      // 类方法静态方法

      // override 覆写,重写

      //This instance method cannot override thestatic method from Labor

 

      public static void method2(){

           System.out.println("");

      }

     

      /**

       * @Override 被这个注解标示的方法,

       *jvm会自动的认为方法是重写父类或者是父类的父类中的方法

       */

      //The method method5() of type Teachermust override or implement a supertype method

//   @Override

      public void method5(){

           System.out.println("method5()");

      }

 

}

packagecom.newedu.jb.day10.inheritance.method;

 

public classTeacherDemo {

 

      public static void main(String[] args) {

 

            Teacherteacher = new Teacher();

          

           teacher.show();

      }

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值