访问控制符/修饰词/接口/内部类

本文详细介绍了Java中的访问控制符,包括public、protected、default和private,强调了封装的重要性。探讨了类加载机制,解释了static、final的用法以及它们结合时的作用。讲解了abstract修饰符和接口的概念,阐述了内部类的种类及其应用,并分享了Eclipse的常用快捷键。

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

访问控制符

访问控制符 public、protected、不填(default / friendly)、private

访问范围工程父子类(不同包)同包自己类
public
protected×
default××
private×××

访问控制符:修饰词 类名/方法名/变量名

封装

  1. 成员变量私有化
  2. 保证了属性的私密性、安全性

类加载

类加载:将类的字节码信息加载到JVM方法区中的过程
什么时候类加载:类使用之前(整个程序运行中,类加载只有一次)

  1. new 对象
  2. new 子类对象 ,父子类依次加载
  3. 调用类的静态成员(方法、属性)

代码块

	{
		//代码块:在调用任何构造器之前都会被调用
	}

static:静态的

和类相关、不需要对象

  1. 静修饰成员变量
    存在方法区中
    只有一份,所有这个类的对象共用的
    通过 类名.属性名 调用
    有类的时候就有静态成员变量
  2. 修饰方法
    通过 类名.方法名() 调用
    类加载的时候加载,必须手动调用
    不可以直接调用普通的成员变量和方法
  3. 修饰代码块
    类加载的时候调用
    需要加载大量资源的时候

final:最终的

最终的,不能被修改的

  1. 修饰变量( 成员变量 / 局部变量)
    不能修改->常量
    字面量:1 2 3.14 true false null
    在使用之前必须初始化
    final成员变量:初始化。1.每个构造器中 2.代码块中 3.声明的同时
  2. 修饰方法
    不能被子类中重写
  3. 修饰类
    没有子类,不能被继承 - String

static + final

修饰成员变量 -> 静态常量

  1. 怎么调用
    类.常量
  2. 在哪初始化
    声明的同时、静态代码块中
    通常用来定义固定的全局选项,通常是int类型

abstract:抽象的

  1. 修饰类(抽象类的意义:被继承)
    抽象类 abstract修饰的类
    可以有抽象方法的类
    不能实例化,靠子类来实例化
    可以有构造器,提供给子类默认调用的
  2. 修饰方法
    抽象方法:不能实现的方法,不知道具体实现。没有方法体,靠子类开实现/重写的
    有抽象方法的类,一定是抽象类

interface:接口(一个特殊的抽象类)

  • 没有构造器,不能实例化
  • 接口的意义:被实现 - implements - 扩展功能
  • 方法默认:public abstract
  • 变量:public static final

类与接口

  • 类 - 类:extends 1-1
  • 类 - 接口:implements 1-n
  • 接口 - 接口:extends 1-n
    A extends B,C
    D implements A
  • 接口 - 类:没有关系

内部类

内部类:一个类的内部定义了一个类

  1. 成员内部类 - 成员变量/成员方法
  2. 静态内部类
  3. 匿名内部类 - 重要,重要,重要
  4. 局部内部类 - pass
public class OuterA{
	private int b;
	private static int c;
	// 成员内部类 - 成员变量 / 成员方法
	protected class InnerA{
		private int a;
		public void m1(){
			b = 0;
		}
	}
	// 静态内部类 - 静态方法 / 静态属性
	public static class InnerB(
		private int a;
		public void m1(){
			c = 0;
		}
	)
}

public class Demo3{
	public static void main(String[] args) {
		// 成员内部类的实例
		OuterA outerA = new OuterA();
		OuterA.InnerA innerA = outerA.new InnerA();
		innerA.m1();
		// 静态内部类的实例
		OuterA.InnerB innerB = new OuterA.InnerB();
	}
}
public class Demo4{
	public static void main(String[] args){
		// 匿名内部类:抽象类、接口
		// 内部方法较少、使用一次
		final int a = 0;
		Soo soo = new Soo() { // 匿名内部类 - 相当于实现了Soo接口
			public void m1(){
				System.out.println("soo 的 m1" + a);
			}
		};
		soo.m1();
	}
}
interface Soo{
	void m1();
}

快捷键:( eclipse)

  • Alt + / :自动匹配/补全
  • Ctrl + Shift + o :自动导包
  • Ctrl + 1 :快速解决方案
  • Ctrl + / :自动注释
  • Ctrl + Shift + / :注释
  • Ctrl + Shift + \ :解注释
  • Alt + 上/下 :快速移动
  • Ctrl + F11 :快速运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值