Java小白的学习之路——day12

这篇具有很好参考价值的文章主要介绍了Java小白的学习之路——day12。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、final

什么是final?

二、接口概述

 什么是接口?

与抽象类的区别

常量接口

接口传参多态

四、内部类

什么是内部类?

成员内部类

静态内部类

局部内部类


一、final

Java小白的学习之路——day12,Java的学习之路,学习

什么是final?

final从字面意思来看时最终的,不可改变的含义,它可以修饰在类、方法以及变量中

值得注意的是:final修饰类则该类不能被继承,修饰方法则该方法不能被重写,修饰变量则该变量变为常量

代码示例

/*final*/ class Animal{//不能被继承
	public /*final*/ void eat() {//不能被重写
		
	}
	
}

class Dog extends Animal{
	public void eat() {
		
	}
}

public class Test1 {
	public static void main(String[] args) {
		
	}
}
class A{
	//final修饰的成员变量,没有初始化,需要赋值
	//a.直接赋值   b.动态代码块  c.构造方法
	final String name ;/*= "b";*/
	//final修饰的静态变量——静态常量(状态值——被判断)
	//a.直接赋值  b.静态代码块
	static final int age;/* = 66;*/
	/*{
		name = "b";
	}*/
	public A() {
		name = "b";
	}
	static {
		age=33;
	}
	String sex;
}

public class Test2 {
	public static void main(String[] args) {
		final int a = 5;
		//a=5;//final修饰的基本类型变量,值不可变
		final int[] arr=new int[] {1,2,3};
		arr[0] = 66;//final修饰的引用变量,值可变
		final A aa = new A();
		//aa = new A();//final修饰引用变量,地址不可变
		aa.sex = "男";//final修饰引用变量,属性值可变
	}
}

二、接口概述

Java小白的学习之路——day12,Java的学习之路,学习

 什么是接口?

接口是指特殊的抽象类,可以看成抽象的事务,它的方法也是抽象的,需要通过实现来类完成

与抽象类的区别

同:生成class文件,不能实例化对象,作为引用类型来使用,均可调用Object方法

异:属性都是公开的静态常量,方法都是公开的抽象方法,不能有构造方法,没有代码

interface MyInter{
	//public static final:公开的静态常量
	String name = " 占山";
	
	//public abstract:公开的抽象方法
	void teat();
	
	//public MyInter() {}没有构造方法
	
	//{}没有动态代码块
	//static {没有静态代码块
}
//实现类的处理:1.将自身变为抽象  2.重写接口的抽象方法
/*abstract */class MyImpl implements MyInter{

	@Override
	public void teat() {
		
		
	}
	
}

实际应用场景,在之后的案例中会更多的使用这些场景

Java小白的学习之路——day12,Java的学习之路,学习

interface fireable{//一般把接口后缀able具备某种能力
	String name = "吴彦祖";
	void fire() ;//能力的具体体现
}
interface ITest{//标记型接口——没有抽象方法的接口	
}
interface ITest2 extends ITest,fireable{//接口的多继承
	
}

class WaWa implements fireable{//实现多个接口
	@Override
	public void fire() {
		System.out.println(" 吴彦祖会演戏");
	}
	public void eat() {
		System.out.println("吴彦祖正在吃饭");
	}
}

public class Test3 {
	public static void main(String[] args) {
		//作为引用类型来使用——多态
		//调用:
		fireable fire = new WaWa();
		fire.fire();//可以调用实现类重写的方法
		//接口引用指向实现类对象
		//但不能调用类中独有方法,强转
		if(fire instanceof WaWa) {//强转成实现类对象——强转会有隐患
			WaWa wa = (WaWa) fire;
			wa.eat();
		}
	}
}

常量接口

//常量接口:接口中,定义了静态常量
interface Inter{
	int HTTP_OK=200;//静态·常量规范
	int HTTP_ERROR=404;
}

public class Test5 {
	public static void main(String[] args) {
		int state = getPageState();
		if(state==Inter.HTTP_OK) {	
			System.out.println("成功返回页面");
		}else if(state==Inter.HTTP_ERROR) {
			System.out.println("失败的页面状态");
		}
	}
	private static int getPageState(){//当成具体实现
		return Inter.HTTP_OK;
	}
}

接口传参多态

interface USB1{
	void run();
}

class Mouse1 implements USB1{
	public void run() {
		System.out.println("鼠标正在连接电脑");
	}
}

class Disk1 implements USB1{
	public void run() {
		System.out.println("硬盘正在连接电脑");
	}
}

class Computer1  {
	public void connect(USB1 usb1) {
		usb1.run();
	}
}

public class Test1_1 {
	public static void main(String[] args) {
		Computer1 com = new Computer1();
		com.connect(new Mouse1());
		com.connect(new Disk1());
	}
}

四、内部类

 Java小白的学习之路——day12,Java的学习之路,学习

什么是内部类?

在一个类的内部又包含了完整的类,它可以生成独立的class文件,可使用外部类的私有成员且不破坏封装性,可以将外部类的一些功能交给内部类完成,有成员内部类、静态内部类以及局部内部类

成员内部类

class Outter{
	private String name="张三";
	public int add(int a,int b) {
		return new Inner().addFun(a, b);//注意这两行的写法
	}
	
	class Inner{//成员内部类
		private String name="李四";
		//private int addFun(int a,int b);不能使用static
		public int addFun(int a,int b) {
		
			System.out.println(name);//输出内容优先作用域小的;用域下
			//System.out.println(Outter.this.name);//张三
			return a+b;
		}
	}
}



public class Test1 {
	public static void main(String[] args) {
		Outter.Inner inner = new Outter().new Inner();
		System.out.println(inner.addFun(4, 5));
	}

静态内部类

只需要在内部类中加上static进行修饰

class A{
	private int age = 30;
	static class B{
		static String name;
		public void show() {
			
			//System.out.println(age);因为加载时机问题,在静态内部类中不能使用外部类属性
			System.out.println("静态内部类方法的调用");
		}
	}
}

public class Test2 {
	public static void main(String[] args) {
		A.B b=new A.B();//static的资源需要类来调
		b.show();
		//简化方式
		B b2 = new B();//这里要导包才不会出错
		b2.show();
	}

局部内部类

不用加public进行修饰文章来源地址https://www.toymoban.com/news/detail-542271.html

class AA{
	public void show() {
		int age =10;//在局部内部类中使用局部变量时会变为常量+final
		/*局部内部类不能加public修饰*/
		class BB{//定义的局部内部类
			//只在当前方法体调用
			public void test() {
				System.out.println(age);
				System.out.println("局部内部类");
			}
		}
		new BB().test();
	}
	
}

public class Test3 {
	public static void main(String[] args) {
		new AA().show();//调用方法
	}
}

到了这里,关于Java小白的学习之路——day12的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从UX小白到行业专家:原型设计的快速学习之路

    原型设计是一个实验过程,设计师将想法转化为不同保真度的有形形式,以捕捉设计概念并与用户一起测试。原型允许设计师快速改进和验证设计,而无需与整个解决方案开发相关的巨大投资成本。最重要的是,原型有助于从失败中吸取教训,接受反馈,逐步改进产品,以满

    2024年01月22日
    浏览(40)
  • Android学习之路(12) setContentView详解

    setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件放在Activity中显示,下面我们根据源码分析setContentView是如何做到的 注意Activity的setContentView和AppCompatActivity的setContentView是有一些区别的,所以我们要分析两钟setContentView,下面先分析Activity的 (1).从Activity的

    2024年01月17日
    浏览(41)
  • 小白的Linux系统学习之路——学前准备(了解Linux、搭建Linux环境)

    ✨✨欢迎来到T_X_Parallel的博客!!       🛰️博客主页:T_X_Parallel       🛰️专栏 : Linux       🛰️欢迎关注:👍点赞🙌收藏✍️留言       🛰️友友们的支持是本博主更新的动力 怎么和腾讯一样是一只企鹅 Linux,全称GNU/Linux,是一套免费使

    2024年02月07日
    浏览(48)
  • 从小白到大神之路之学习运维第54天--------ELK日志收集分析

    第三阶段基础 时  间:2023年7月6日 参加人:全班人员 内  容: ELK技术堆栈 目录 服务器设置: 部署elasticsearch集群: 配置elasticsearch集群: 配置收集系统日志: elk_cluster集群 主机名 huyang1 huyang2 huyang3 IP地址 192.168.59.137 192.168.59.138 192.168.59.140 环境配置:(三台服务器都配置)

    2024年02月13日
    浏览(59)
  • 从小白到大神之路之学习运维第55天--------shell脚本实例应用

    第三阶段基础 时  间:2023年7月7日 参加人:全班人员 内  容: shell实例 目录 shell脚本应用: 一、shell脚本 二、环境变量的基本使用 三、条件测试 1、shell脚本的作用shell解释器的作用 1)shell脚本的作用 自动化运维使用 批量化重复操作使用脚本代替 2)shell解释器的作用 L

    2024年02月13日
    浏览(59)
  • 猿创征文|弃文从工,从小白到蚂蚁工程师,我的 Java 成长之路

    最近 CSDN 开展了猿创征文,希望博主写文章讲述自己在某个领域的技术成长历程。 之前也曾想找个机会写篇文章,记录下自己的成长历程。 因此,借着这个机会写下这篇文章。 在回顾自己的成长历程的同时,希望对一些同学的学习和工作也会有一些启发和帮助。 阅读本文,

    2024年02月16日
    浏览(50)
  • 从小白到大神之路之学习运维第67天-------Tomcat应用服务 WEB服务

    第三阶段基础 时  间:2023年7月25日 参加人:全班人员 内  容: Tomcat应用服务 WEB服务 目录 一、中间件产品介绍 二、Tomcat软件简介 三、Tomcat应用场景 四、安装配置Tomcat 五、配置目录及文件说明 (一)tomcat主目录介绍 (二)Tomcat的脚本文件 (三)webapps目录介绍 六、Tomc

    2024年02月15日
    浏览(44)
  • 小白的机器学习之路(四)神经网络的初步认识:基于pytorch搭建自己的神经网络

    当前交通大数据业务的需要,需要承担一部分算法工作(数据处理) 目标四: 学习深度学习基础:了解神经网络的基本结构、反向传播算法和激活函数等。 目标任务:使用深度学习算法构建一个简单的神经网络模型,并训练模型。 学习计划小贴士: 每天定期复习前几天的

    2024年02月15日
    浏览(39)
  • 【Qt 学习之路】记一次安装 Qt5.12.12 安卓环境的失败案例

    安装的 Qt5.12.12 版本 Qt下载地址: https://download.qt.io/archive/qt/ 安装Qt,可能会碰到“qt.tool.perl”安装程序错误,可以看我的记录解决: Qt开发 之 安装程序错误–安装进程(qt.tool.perl)的解决办法 JDK NDK SDK openssl 注意组合套件的版本和Qt的版本要对应起来!同时,安装路径不可

    2024年02月19日
    浏览(37)
  • 【超详细~KVM】KVM概述、安装及简单操作-------从小白到大神之路之学习运维第91天

    第四阶段提升 时  间:2023年8月30日 参加人:全班人员 内  容: KVM概述、安装及简单操作 目录 一、KVM 概述 二、KVM工作原理 三、KVM应用场景 四、centos7 下安装部署 五、新建虚拟机步骤 1、创建存储池并创建存储卷 2、点击+号创建KVM存储池 3、创建存储卷 4、创建ISO存储池

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包