Java | 详解面向对象(一)

本文介绍了Java面向对象的基本概念,包括类、对象、引用、构造方法、this关键字、抽象类、final关键字、静态(static)概念、接口(interface)的作用及定义、内部类的种类及其特点。

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

1、基本定义

  • public class Demo {
    	// 属性状态
    	private String name;
    	
    	// 方法行为
    	void setName(String name) {
    		this.name = name 
    	}
    }
    
    • 对事物、逻辑、算法或概念的抽象。描述一类对象的行为和状态。
  • 对象(实例)

    • 对象是类的一个实例(对象不是找个女朋友),有状态和行为。
  • 引用

    • java中,一切都“看作”对象,但操纵的标识符实际是指向一个对象的“引用”(reference)。”
  • 构造方法

    • 新建对象时,执行的一个特殊方法
    • 在创建一个对象的时候,至少要调用一个构造方法
    • 构造方法的名称必须与类同名,一个类可以有多个构造方法
  • this

    • 引用当前对象
    • 构造方法之间调用
  • 方法重载overload

    • 同名不同参
  • 抽象类

    abstract class Person {
        public abstract void run();
    }
    
    • 作用
      • 为子类提供通用代码

      • 为子类提供通用方法的定义

      • 注意点

        • 抽象类不能创建对象
        • 包含抽象方法的类,必须是抽象类
        • 抽象类中,不一定有抽象方法
  • final

    • 最终不可变的
    • 修饰变量、方法、类
  • static(静态)

    • 静态变量属于类,可以成为“类变量”
    • 非静态成员属于实例
    • 静态成员通常使用类名直接调用
    • 被static修饰的成员将最优先加载到内存

2、接口

[可见度] interface 接口名称 [extends 其他的接口名] {
        // 声明变量
        // 抽象方法
}
  • 作用

    • 结构设计工具,用来解耦合

    • 极端的抽象类

    • 用interface替代class

    • 用implements替代extends

    • 接口中只能定义

    • 公共的常量

    • 公共的抽象方法

    • 公共的内部类、内部接口

3、内部类

  • 定义

    • 定义在类内部,方法内部或局部代码块中的类
  • 非静态内部类

    class OuterClass {
        ...
        class NestedClass {
            ...
        }
    }
    
    • 非静态内部类依赖于外部类对象存在
    • 在非静态内部类中,不能定义静态成员
  • 静态内部类

    public class StaticInnerTest {
        private int x = 1;
        private static int y = 2;
    
        public void test(){
            System.out.println(new InnerClass().a);
            System.out.println(InnerClass.b);
        }
    
        static class InnerClass {
            private int a = 3;
            private static int b = 4;
    
            public void test(){
                //无法访问
    //            System.out.println(x);
                System.out.println(y);
            }
        }
    }
    
    • 使用static修饰的成员内部类,称之为静态内部类
    • 静态内部类只能访问外部类的静态成员
    • 不能直接访问外部类的非静态成员
  • 局部内部类

    public class Test {
        public void method() {
            class Inner {
                // 局部内部类
            }
        }
    }
    
    • 定义

      • 声明在方法内部的类
      • 局部类型,只能在局部使用
      • 但它的实例,可以转为父类型传递出去
    • 注意

      • 不可以使用任何访问权限修饰符
      • 不可以直接访问局部变量(方法的参数等效于局部变量)
      • 如果一定需要访问,则需要使用final对局部变量进行修饰
  • 匿名内部类

    abstract class Person {
        public abstract void eat();
    }
     
    public class Demo {
        public static void main(String[] args) {
            Person p = new Person() {
                public void eat() {
                    System.out.println("eat something");
                }
            };
            p.eat();
        }
    }
    
    • 直接创建已知的类的子类的对象,则该对象的类型就是匿名内部类

    • 匿名内部类也就是没有名字的内部类

    • 因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

    • 使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟华328

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值