有恒ccs

导航

java继承与多态

1.定义子类格式
    public class Studet3 extends  Person{
    }
2.在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问方式有两种
    1.通过子类对象访问成员变量
        等号左边是谁,就优先用谁
    2.间接通过成员方法访问成员变量
        该方法属于谁,就优先用谁,没有的话向上查找
3.区分子类方法中变量重名的方式
    局部变量:直接访问
    本类的成员变量:this.成员变量名  访问
    本类的成员变量:super成员变量名  访问
4.继承中成员方法访问特点
    如果父类方法和子类方法重名,创建的对象是谁,就优先用谁,如果没有则向上找
5.继承中方法的重写
    概念:方法名称一样,参数列表也一样
    注意事项:1.建议写注释@Override
         2.子类方法的返回值必须要小于等于父类方法的返回值
         3.子类方法的权限必须大于等于父类方法的权限修饰符 public>pprotect>default>private
6.继承关系中,父子类构造方法
    1.子类方法构造方法有一个默认的“super”方法调用,所以先调用父类方法 后调用子类方法
    2.子类构造可以通过super关键字来调用父类重载构造
    3.super的父类构造调用,必须是子类构造方法的第一个语句。且只能调用父类构造一次
    public Zi(){
        super();//调用父类构造方法
            }
    public void method(){
        super();//错误写法
            }
7.附this关键字的用法
    1.在本类的成员方法中,访问本类的成员变量
    2.在本类的成员方法中,访问本类的另一个成员方法
    3.在本类的构造方法中,访问本类的第一个构造方法
8.java继承的三个特点
    1.java语言是单继承的,一个类的直接父类只能有唯一一个
        class A extend B{} 而不是class A extend B,C{}
    2.java语言可以多级继承
        class B extend A{} 
        class C extend B{} 
    3.一个子类的直接父类是唯一的,但是一个父类可以拥有多个子类。
        class B extend A{} 
        class C extend A{} 

9.抽象方法和抽象类的定义格式
    public abstract class Animal01 {
    //这是一个抽象方法,代表吃东西,具体吃什么不确定
    public abstract void eat();
}
    注意事项:1.不能直接创建抽象类对象
              2.必须用一个子类来继承父类
              3.子类必须覆盖重写父类中所有的抽象方法
    public class Cat extends  Animal01{
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}
10.接口概念
    1.接口当中的抽象方法,修饰符必须是两个固定的关键字publi abstract(可省略)
        public interface Interface01 {
               public  abstract  void method();
            }
    2.接口的抽象方法不能直接使用,必须有一个实现类来实现此接口
        public class Shixian implements   Interface01{
                                @Override
                                public void method() {
                                }
                                @Override
                                public void method1() {
                                }
                                @Override
                                public void method2() {
                                }
                                @Override
                                public void method3() {
                                }
                            }
    3.接口中默认方法格式(默认方法可解决接口升级问题)
            public default void methodde(){
                System.out.println("默认方法");
            };
        **默认方法也可以被实现类重写    
    4.接口的静态方法不可以通过实现类对象来访问
        接口名称.静态方法名();
    5.接口的私有方法用来解决重复代码问题 Java9开始
          public default void meth(){
            System.out.println("方法一");
            meth3();
            }
            public  default  void meth2(){
                System.out.println("方法一");
                meth3();
            }
            private  void meth3(){
                System.out.println("共有方法");
            }
    6.接口中的成员变量必须使用public static final三个关键字进行修饰
    7.注意事项:a.接口没有静态代码块或者构造方法
                b.一个类的直接父类是唯一的,但一个类可以同时有多个接口
                c.如果实现类所实现的多个接口当中,存在重复抽象方法,那么只需要覆盖重写一次即可
                d.如果实现类没有覆盖重写接口中的所有抽象方法,那么这个实现类必须是一个抽象类
                e.如果实现类所实现的多个接口当中存在重复的默认方法,那么实现类一定要对重复的默认方法进行重写
                f.如果直接父类中的方法和接口方法冲突,优先使用父类方法

 

posted on 2021-12-03 22:20  有恒ccs  阅读(51)  评论(0编辑  收藏  举报