Java基础之面向对象

小编 2026-06-20 阅读:1460 评论:0
抽象方法和抽象类 用abstract修饰 注意: 1.抽象方法没有方法体,只有声明,定义的是一种规范,子类必须定义具体实现; 2,有抽象方法的类必须定义为抽象类,抽象类中可以包含普通方法; 3...

抽象方法和抽象类

用abstract修饰
注意:
1.抽象方法没有方法体,只有声明,定义的是一种规范,子类必须定义具体实现;
2,有抽象方法的类必须定义为抽象类,抽象类中可以包含普通方法;
3.抽象类不能实例化,不能用new关键字来实例化;
4,抽象类只能被用来继承,抽象类必须被子类实现;
5.抽象类可以包含属性,方法,构造方法等,但是构造方法不能用来new实例,只能用来被子类调用

接口

接口是比抽象类还抽象的“抽象类”。接口不提供任何实现。接口中的一切都是不变的。接口和它的实现类也不是父子关系,而是实现规则的关系。接口就是规范。
接口的声明:

  [访问修饰符]  interface 接口名   [extends  父接口1,父接口2…]  {
 常量定义;  
 方法定义;

}
接口使用的详细说明:
1.访问修饰符只能是public和默认。
2.extends:接口可以继承多个父接口;
3.常量:接口中的属性只能是常量,默认public Final修饰;
4方法:接口中的方法默认是public abstract修饰
5.实现类可通过implements来实现接口中的规范
6.接口不能创建实例,但是可用于声明引用变量类型
7.一个类实现了接口,则必须实现接口中的所有方法,而且这些方法只能是public的

要了解面向接口编程的思想。

内部类

内部类(innerclasses):顾名思义就是将一个类放在另一个类的内部定义。内部类可以用所有的访问控制符修饰,但是外部顶级类只能用public和default修饰。内部类只是一个编译的概念,一旦编译成功,就会成为两个不同的类。所以内部类是相对独立的存在,其成员变量/方法可与外部类相同。
内部类的作用及使用场合:
1.提供了良好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问;
2.内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员,但外部类不能访问内部类的内部属性和方法
3.接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变的更加完整。
###内部类的分类
内部类分为成员内部类,匿名内部类和局部内部类;
成员内部类:
又分为非静态内部类和静态内部类

  1. 非静态内部类:
    i. 非静态内部类必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象。

    ii. 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员。

    iii. 非静态内部类不能有静态方法、静态属性和静态初始化块。

    iv. 外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例。

    v. 成员变量访问要点:

    1. 内部类里方法的局部变量:变量名。
    
    2. 内部类属性:this.变量名。
    
    3. 外部类属性:外部类名.this.变量名。
    

    内部类的访问:
    1. 外部类中定义内部类:
    new Inner()

    2. 外部类以外的地方使用非静态内部类:
    

    Outer.Inner varname = new Outer().new Inner()。

  2. 静态内部类
    i. 定义方式:
    static class ClassName {
    //类体
    }

    ii. 使用要点:

    1. 当一个静态内部类对象存在,并不一定存在对应的外部类对象。 因此,静态内部类的实例方法不能直接访问外部类的实例方法。

    2. 静态内部类看做外部类的一个静态成员。 因此,外部类的方法中可以通过:“静态内部类.名字”的方式访问静态内部类的静态成员,通过 new 静态内部类()访问静态内部类的实例。

匿名内部类
适合那种只需要使用一次的类。比如:键盘监听操作等等。
语法:
new 父类构造器(实参类表) \\实现接口 () {
//匿名内部类类体!
}
注意

  1. 匿名内部类没有访问修饰符。

  2. 匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢。

局部内部类
还有一种内部类,它是定义在方法内部的,作用域只限于本方法,称为局部内部类。
局部内部类的的使用主要是用来解决比较复杂的问题,想创建一个类来辅助我们的解决方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类。局部内部类和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法中被使用,出了该方法就会失效。
局部内部类在实际开发中应用很少。

String基础

String类又名不可变字符序列。它位于java.lang 包中,Java程序默认导入java.lang中的所有类。Java字符串就是Unicode字符序列。Java中无内置的字符串类型,而是在标准Java类库中提供了一个预定义的String类。
.Java允许使用符号\"+“把两个字符串连接起来。
n-符号”+“把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式。
n-当”+\"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

#####Java的内存分析中,常量池的概念:
1. 全局字符串常量池(String Pool)
全局字符串常量池中存放的内容是在类加载完成后存到String Pool中的,在每个VM中只有一份,存放的是字符串常量的引用值(在堆中生成字符串对象实例)。
2. class文件常量池(Class Constant Pool)
class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串、final常量等)和符号引用。
3. 运行时常量池(Runtime Constant Pool)
运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。
后面再详细了解常量池

学习如何看官方的API文档以及了解String类的常见方法及使用

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表