Java学习总结--010权限修饰符 +内部类+ 匿名内部类

本文详细介绍了Java中的权限修饰符,包括private、默认、protected和public的访问特性。此外,还探讨了内部类的分类、访问特点以及静态内部类的使用规则。最后,介绍了匿名内部类的概念及其简化代码的实用性。

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

方法参数类型以及返回值类型问题

一个方法的形参要一个类 类型,就传一个该类的对象;
一个方法的形参要一个抽象类 类型,就传一个该抽象类的子类对象;
一个方法的形参要一个接口类型,传一个该接口的子类对象;

一个方法的返回值类型 是一个 类 类型,就返回该类的一个对象;
一个方法的返回值类型,要一个接口类型,就返回该接口的一个子类对象;
一个方法的返回值类型,要一个抽象类 类型,就返回一个该抽象类的子类对象;

链式编程

public class MyTest {
    public static void main(String[] args) {
        //链式编程
        //Student student = new Student();
        //Student student1 = student.getStudent(new Student(), 100);
        //student1.show(109);
        //链式编程:当你调用完一个方法之后,方法的返回值又是一个对象,那么你就可以紧接着打点再去
        //调用对象的方法
        Student student = new Student();
        new Student().getStudent(student, 100).show(109);
        System.out.println(student.num); //
    }
}

class Student {
    int num = 10;
    public Student getStudent(Student stu, int num) {
        stu.num = num;
        return this;
    }
    public void show(int num) {
        this.num = num;
    }
}

package关键字

就是文件夹;
作用: 用来解决同一个路径下不能存在同名文件的问题(分类管理);
1.定义包的格式
package 包名;
多级包用.分开即可
2.定义包的注意事项
A:package语句必须是程序的第一条可执行的代码;
B:package语句在一个java文件中只能有一个;
C:如果没有package,默认表示无包名;

import关键字

1.导包
不同包下的类之间的访问,
2.导包格式
import 包名;
注意:这种方式导入是到类的名称。

四种权限修饰符

四种权限修饰符: private(私有的) , 默认 , protected(受保护的) , public(公共的)
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y

内部类

把类定义在其他类的内部,这个类就被称为内部类。
访问特点
a:内部类可以直接访问外部类的成员,包括私有。
b:外部类要访问内部类的成员,必须创建对象。
1.按照内部类位置分类
成员位置:在成员位置定义的类,被称为成员内部类。
局部位置:在局部位置定义的类,被称为局部内部类。

2.成员内部类
如何在测试类中直接访问内部类的成员。
格式: 外部类名.内部类名 对象名 = 外部类对象.内部类对象;

3.成员内部类的修饰符:
private 为了保证数据的安全性;
static 为了方便访问数据;
注意事项: a:静态内部类访问的外部类数据必须用静态修饰;
b: 成员方法可以是静态的也可以是非静态的;

3.成员内部类被静态修饰后的访问方式是:
格式: 外部类名.内部类名 对象名 = new 外部类名.内部类名();

4.局部内部类访问局部变量
A: 可以直接访问外部类的成员,包括私有
B: 可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能
C:局部内部类访问局部变量必须用final修饰

public class MyTest {
    public static void main(String[] args) {
        //内部类:将一个类定义到,另一个类的内部,那么这个类,就叫做内部类
        //举例:例如将 A类定义到B类里面,A类叫做内部类,B类叫做外部类
        //根据定义的位置不同,分为成员内部类,和 局部内部类
        // 成员内部类:这个内部类,在外部类的成员位置
        // 局部内部类:将内部类,定义到外部类的方法中
    }
}
class B {
    //成员内部类
    class A {
    }
    public void show() {
        //局部内部类
        class C {
        }
    }
}

注意:
内部类可以直接访问外部类的成员,包括私有;
外部类,想要访问内部类的成员,得创建内部类的对象;
内部类被静态修饰后,创建内部类的语法要改变;
静态内部类要访问外部类的成员只能访问静态的;
局部内部类,外界不能直接创建其对象;

匿名内部类

就是局部内部类的简化。
匿名内部类的写法:
AA a = new B();
a.show();
格式:
new 类名或者接口名() {
重写方法;
};

 interface Inter {
		public static final int a = 23 ;
	}
	
	public class Test {

		public static void main(String[] args) {
			new Inter() {
				public void show() {
				// 这个this表示的是匿名内部类的这个对象
					System.out.println(this.a);
				}
			}.show();
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值