超详细的JAVA高级进阶基础知识01

news/2024/7/7 20:39:36

目录

1. 面向对象高级01

1.1 static 关键字

1.1.1 static 关键字的介绍

1.1.2 static 修饰成员的特点

1.1.3 static 关键字总结 

1.2 继承

1.2.1 继承介绍

1.2.2 继承 - 学习路径

1.2.3 继承中的成员访问特点 - 成员变量

1.2.4 继承中的成员访问特点 - 成员方法 

1.2.5 Java 中继承的特点

1.2.6 继承中的构造方法执行流程 - 内存图解 

1.2.7 this 和 super

1.3 final 关键字

1.3.1 final 关键字的介绍

1.3.2 final 修饰变量的细节补充

1.3.3  今日学习目标

1.4 包

1.5 抽象类

1.5.1 抽象类的介绍 

1.5.2 抽象类注意事项

1.5.3 abstract 关键字的冲突

1.6 接口

1.6.1 抽象类与接口

1.6.2 接口的介绍

1.6.3 接口中成员的特点

1.6.4 类和接口之间的各种关系

1.6.5 抽象类和接口的对比

1.6.6 接口的应用场景

1.7 多态

1.7.1 多态介绍

1.7.2 多态的成员访问特点⭐

1.7.3 多态的好处和弊端

1.7.4 多态中的转型 

1.7.5 多态中的转型问题

1.7.6 今日学习目标


1. 面向对象高级01

1.1 static 关键字

1.1.1 static 关键字的介绍

      static 静态的意思,可以修饰成员变量,也可以修饰成员方法

1.1.2 static 修饰成员的特点

  • 被其修饰的成员, 被该类的所有对象所共享
  • 多了一种调用方式, 可以通过类名调用
  • 随着类的加载而加载, 优先于对象存在
  • 在静态方法中, 只能访问静态成员 (直接访问)

 如在线人数: 被所有人共享,即可用static修饰该成员。 

详细具体的内存结构如下

1.1.3 static 关键字总结 

1.2 继承

1.2.1 继承介绍

⭐继承:让 类与类之间产生关系 (子父类关系), 子类 可以 直接使用父类 非私有的成员

什么时候使用继承?

当类与类之间,存在相同 (共性) 的内容,并且产生了 is a 的关系,就可以考虑使用继承,来优化代码。

举例:

学生:姓名,年龄                                 项目经理:姓名,工号,工资

老师:姓名,年龄                                 程序员:姓名,工号,工资

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

人:姓名,年龄                                     员工:姓名,工号,工资

1.2.2 继承 - 学习路径

■ 知道什么是继承 , 以及什么时候使用继承
■ 继承中成员的访问特点
  • -成员变量
  • -成员方法
  • -构造方法

1.2.3 继承中的成员访问特点 - 成员变量

 如需要使用父类的,怎么办?     使用super关键字来进行解决,即在成员变量面前使用super.

public class Zi extends Fu { 
  int num = 20;
      
  public void method(){    
      //  System.out.println(num);     
      System.out.println(super.num);    
  } 
}

1.2.4 继承中的成员访问特点 - 成员方法 

 子类重写父类的要求 

 注意事项

权限修饰符 

1.2.5 Java 中继承的特点

 为什么不支持多继承?  因为这样会产生冲突。

 为啥多层继承可以?  因为不会产生冲突,子类的方法覆盖了父类的方法。

 需明确 this super所在的位置

'com.itheima.mextends.ExtendsDemo3.super' cannot be referenced from a static context

public class ExtendsDemo3 {
  

    public static void main(String[] args) {
        Son s = new Son(30);
        s.love();
        s.getMethod();
        System.out.println(s.num);

        // 这个的super指的不是 Father 因为此时所在的类为ExtendsDemo3
        // 即需要主要所在的类 以及this super 的归属问题
        // System.out.println(super.num);
    }
}

class Father {

    public int num ;

    public Father(int num) {
        this.num = num;
    }

    public void love() {
        System.out.println("送花");
        System.out.println("送肉");
        System.out.println("唱歌");
    }

    public void getMethod(){
        System.out.println("124");
    }

}

class Son extends Father {


    @Override
    public void love() {
        System.out.println("送酱肉包");
        System.out.println("送口红");
        System.out.println("我喜欢你, 一起去爬山吗~");
    }

    public Son(int num) {
       super(num);
    }
}

继承中的成员访问特点 – 构造方法

 

在子类中如何完成父类的初始化?

 在所有的构造方法中,都默认隐藏了一句话 super();

         通过这句代码,来访问父类的空参构造方法

1.2.6 继承中的构造方法执行流程 - 内存图解 

1.2.7 this 和 super

  • this:代表本类对象的引用
  • super:代表父类存储空间的标识

 注意:this()super() 都在争夺构造方法第一行的位置,所以二者不能共存.

 被调用的变量和方法, 在子类中不存在, super.可以直接省略的

1.3 final 关键字

1.3.1 final 关键字的介绍

final 关键字是最终的意思,可以修饰(方法,类,变量)

final 修饰的特点

  • 修饰方法:表明该方法是最终方法,不能被重写
  • 修饰类:表明该类是最终类,不能被继承
  • 修饰变量:表明该变量是常量,不能再次被赋值

1.3.2 final 修饰变量的细节补充

  • 变量是基本类型:final 修饰指的是基本类型的数据值不能发生改变
  • 变量是引用类型:final 修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
  • 成员变量如果被 final 修饰,需要在构造方法结束之前完成赋值

1.3.3  今日学习目标

1.4 包

1.5 抽象类

1.5.1 抽象类的介绍 

抽象类是一种特殊的父类,内部可以编写抽象方法

抽象类: 特殊的父类

问题: 特殊在哪里呢?
回答: 内部允许编写抽象方法

问题: 什么是抽象方法?
回答: 当我们将共性的方法, 抽取到父类之后, 发现这个方法在父类中无法给出具体明确(描述不清了)
        而且这个方法, 还是子类必须要有的方法, 就可以设计为抽象方法.
public class AbstractTest1 {

    public static void main(String[] args) {

    }
}

abstract class Animal {
    public abstract void eat();
}

class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}

class Dog extends Animal {

    @Override
    public void eat() {
        System.out.println("狗吃肉");
    }
}

抽象方法和抽象类

 ■ 抽象方法的定义格式: 

  • public abstract 返回值类型 方法名(参数列表);

 ■  抽象类的定义格式:

  • public abstract class 类名{} 

1.5.2 抽象类注意事项

1.5.3 abstract 关键字的冲突

  • final:被 abstract 修饰的方法,强制要求子类重写,被 final 修饰的方法子类不能重写
  • private:被 abstract 修饰的方法,强制要求子类重写,被 private 修饰的方法子类不能重写
  • static:被 static 修饰的方法可以类名调用,类名调用抽象方法没有意义

1.6 接口

生活中的接口,其实接口是一种规则。

1.6.1 抽象类与接口

接口是一种特殊的抽象类

接口: 体现的思想就是声明 [规则]

思路: 如果发现一个类, 所有的组成, 都是抽象方法
            - 没有成员变量
            - 没有普通方法

            这种类, 我们通常会设计为Java中的接口, 因为现在这个类存在的唯一价值, 就只是声明规则了

1.6.2 接口的介绍

1.6.3 接口中成员的特点

接口的成员特点 :

    1. 成员变量 : 只能定义常量, 因为系统会默认加入三个关键字
                        public static final
                        - 这三个关键字没有顺序关系

    2. 成员方法 : 只能是抽象方法, 因为系统会默认加入两个关键字
                        public abstract

    3. 构造方法 : 没有

1.6.4 类和接口之间的各种关系

接口继承接口

1.6.5 抽象类和接口的对比

1.6.6 接口的应用场景

      接口可以为程序制定规则, 代码更加规范 

  

抽象类和接口的对比

  • 抽象类 : 对事物做抽象 (描述事物)
  • 接口 : 对行为抽象 (制定规则)

1.7 多态

1.7.1 多态介绍

    同一个行为具有多个不同表现形式或形态的能力

多态前提

  • 有继承 / 实现关系
  • 有方法重写
  • 有父类引用指向子类对象

1.7.2 多态的成员访问特点⭐

  • 成员变量:编译看左边(父类),执行看左边(父类)
  • 成员方法:编译看左边(父类),执行看右边(子类)

1.7.3 多态的好处和弊端

     多态的好处 :提高了程序的扩展性

  • 对象多态 : 将方法的形参定义为父类类型, 这个方法可以接收该父类的任意子类对象
  • 行为多态 : 同一个行为, 具有多个不同表现形式或形态的能力

    多态的弊端:不能使用子类的特有成员 

1.7.4 多态中的转型 

1.7.5 多态中的转型问题

概述:如果被转的引用类型变量对应的实际类型目标类型不是同一种类型,那么在转换的时候就会出现ClassCastException  

  • 关键字 instanceof
  • 使用格式:

对象名 instanceof 类型

判断一个对象是否是一个类的实例

通俗的理解:判断关键字左边的对象,是否是右边的类型,返回boolean类型结果

1.7.6 今日学习目标

  


http://lihuaxi.xjx100.cn/news/836896.html

相关文章

互联网摸鱼日报(2023-02-08)

互联网摸鱼日报(2023-02-08) InfoQ 热门话题 “赋能制造 因你而耀”第六届全国工业互联网数据创新应用大赛算法赛题上新! 全球化安全生产 & 质量保障体系建设探索 B2B跨境支付平台XTransfer的质量保障体系建设之路:测试的左…

Cannot read property ‘getDisplayMedia‘ of undefined

文章目录一、问题出现原因二、解决方法方法一:方法二:三、其他注意事项今天在把项目部署到服务器上的时候,突然发现直播功能失效了,在本地跑是没有问题的,找了半天终于知道是什么原因了,即 Cannot read pro…

Vue3电商项目实战-首页模块5【18-首页主体-轮播图-逻辑封装、19-首页主体-面板封装、20-首页主体-新鲜好物、21-首页主体-人气推荐】

文章目录18-首页主体-轮播图-逻辑封装19-首页主体-面板封装20-首页主体-新鲜好物21-首页主体-人气推荐18-首页主体-轮播图-逻辑封装 目的: 封装小兔鲜轮播图组件,第三步:逻辑功能实现。 大致步骤: 自动播放,暴露自动轮…

SAP IDOC DELVRY03 增强相关

一.如何增强自定义结构 1.WE31 创建你想要增加的字段 最后别忘了set release 2.WE30-->创建自己的extension 右键合适的位置去append 最后别忘了 set release 3.WE82-->新建一条自己的记录(注意是新建不是修改) 4.WE20-->分配自己的增强 二.交…

社交赛道的后起追赶者Damus有什么不一样?不发代币的Nostr让Web2和Web3都沉默了

这是被串公钥刷屏一周,无论是在朋友圈还是推特 Facebook,关键性事件就是 Twitter 前首席执行官 Jack Dorsey 发推称,基于去中心化社交协议 Nostr 的社交产品 Damus 和 Amethyst 已分别在苹果 App Store 和谷歌 Google Play Store 上线&#x…

2月8日,30秒知全网,精选7个热点

///印度Petronet公司将与卡塔尔续签长期协议,寻求更多液化天然气进口 今年将与卡塔尔续签长期协议,寻求每年100万吨的液化天然气(LNG)进口 ///盖茨再谈ChatGPT:AI能提高效率,但要考虑边界在哪 盖茨认为&a…

算法导论:回溯法

基本思想 将所有的解按照一定结构排列,再进行搜索。一般解空间构造成树状结构,用深度优先搜索策略。针对所给问题,定义问题的解空间。 确定易于搜索的解空间结构。 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。常用的剪枝函数:用约束函数在扩展结点处…

web3招聘信息渠道

【web3招聘信息渠道】随手转发,供参考,供补充。 个人微博:https://weibo.com/u/2434823180 Blog: https://apenote.github.io vx: apedamoon 一、ABetterWeb3https://abetterweb3.notion.site/abetterweb3/ABetterWeb3-Job-Board-daa095830b624e96af46de63fb9771b9中文 Web…