面向对象

本文深入解析Java类的基本概念,包括静态方法、实例方法、继承、多态、接口、异常处理等关键特性,并探讨了封装、继承与多态的设计原则,以及常见基础类的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、类的基本概念

  • static表示类方法,也叫静态方法,与此相对的是实例方法,即没有static修饰,必须通过实例或对象调用,而类方法可以通过类名直接调用
  • 静态初始化代码块在类加载的时候执行,在任何对象创建之前,且只执行一次
static int STATIC_TWO;

//静态初始化代码块
static {
   STATIC_TWO = 2;
   }
  • 可见性范围从大到小:private<默认(包)<protected<public

  • 打包方式:到编译后的Java class文件根目录,运行命令jar -cvf <包名>.jar <最上层包名>

例如E:\bin\shuo\laoma\Hello.class就用jar -cvf hello.jar shuo

  • Object是所有类的父类,它定义的方法可以直接被所有类使用,有:

    • equals(): boolean
    • getClass(): Class<?>
    • hashCode(): int
    • notify() void
    • notifyAll(): void
    • toString() String
    • wait() void
    • wait(long timeout): void
    • wait(long timeout,int nanos) void
  • 多态:一种类型的变量可引用多种实际类型对象

2、类的继承

  • 重载:方法名相同参数签名(参数个数、类型、顺序)不同;重写:子类重写与父类相同参数签名的方法
  • 调用多个重名函数时寻找重载版本中最匹配的,然后才看变量的动态类型惊醒动态绑定
  • instanceof表示变量引用的对象是不是该类或其子类的对象,也可以用来判断一个对象是否实现了某接口
public boolean canCast(Base b) {
    //返回Base类型变量是否可以转换成Child类型
    return b instanceof Child;
}

//判断p是否实现了Comparable接口
Point p = new Point(2,3);
if(p instanceof Comparable) {
    return true;
}
  • final防止继承:修饰类或者方法就不能被继承
  • 封装就是隐藏实现细节,提供简化接口,是程序设计的第一原则
  • 继承可能破坏封装是因为子类和父类之间可能存在着实现细节的依赖

3、类的扩展

  • 接口可以降低耦合,提高灵活性,可以代码复用
  • java8允许接口中定义两类新方法:静态方法和默认方法
public interface IDemo {
    void hello();
    //静态方法
    public static void test() {
        System.out.println("hello");
    }
    //默认方法
    default void hi() {
        System.out.println("hi");
    }
}
  • 抽象类
public class abstracClassTest {
    public static void main(String[] args) {
        test t = new abstractTest();//注意这个定义
        
        //abstractTest t = new abstractTest();错误的
        
        t.print();
    }
}
    
abstract class test {
    public void print() {
        System.out.println("hello world");
    }
}
    
class abstractTest extends test {}
  • 内部类
    • 方法内部类只能在定义的方法中使用
  • 匿名内部类只能被使用一次,用来创建一个对象

4、异常

  • Java7开始支持一种新的捕获多个异常的语法,用“|”操作符
try {
 //exception
 }catch (ExceptionA | ExceptionB e){
    e.printStackTrace();
}
  • 如果在try或者catch语句中有return语句,则return语句在finally语句执行结束后才执行,但是finally并不能改变返回值
  • 避免在finally语句中使用return或者抛出异常
    ###5、常用基础类
  • hashCode:返回对象的哈希值,哈希值是一个int类型的数

1、对两个对象如果equals返回true则hashCode必须一样,返回false可以一样也可以不一样
2、hashCode默认实现一般是将对象的内存地址转换为整数
3、子类如果重写equals方法也必须重写hashCode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值