这个系列的博客是我个人学习java的学习笔记分享,面向已经有一定C语言编程基础的同学。 每一章的内容都是我学习过、整理过的笔记,具有一定的学习参考价值。 如有错误请与我联系修改,十分感谢!
内含:接口及相关,包,Scanner笔记
接口中只有抽象的方法,常量的定义
定义形式:
interface 接口名{} 接口特征:1.public接口可被任何类实现 2.接口不能用private、protected修饰,可以被abstract修饰 接口中方法的特征:1.接口中的抽象方法自带abstract,不用写(这是接口才有的特权); 2.接口是不能实例化的,要有类来实现这个接口; 实现格式: class 类名 implements 接口名{} (需要对接口中的类都进行实现,记得方法要写public) 3.接口上的方法不能是private,protected,static,final; 4.对接口中定义的常量,使用的时候可以直接:接口名.常量 来使用; 5.接口中常量默认是public static final的; 6.常量命名规范:用大写字母,单词之间用_分隔; 7.接口可以继承接口 8.一个类(或接口)可以继承多个接口,如果有重复的抽象方法,会把两个进行合并。接口在JDK1.8之后的特点:
接口中的方法其实可以不是抽象方法,可以是静态方法。1.8之后,我们可以在接口中定义默认实现的方法,就是说这个方法也不是抽象了我给他具体的操作;如果调用这个接口的类没有实现这个方法也不会报错,他会自动实现接口里的默认方法。具体书写格式如下:public default void 方法名{内容} # 这个方法也称为default方法父子类之间的转换:引入多态
子类转父类:
子类自动转父类:父类名 对象 = new 子类名();定义对象的时候,虽然new的是子类,但是因为对象是父类的,所以就自动转换为父类;
对于父子同名的方法,调用的是子类的方法,但这里子类指向父类的实例的引用不能调用子类中特有的内容; 对于父子同名的属性,调用的是父类的属性;
父类转子类:
特点:
父类转换成子类不能自动完成,只能强制转换 父类转换成子类的前提是:父类的真身是子类 如果这个父类的真身是子类2,不能强制转换成子类1
强制转换:
父类名 对象1 = new 子类名(); # 父类对象的真身是子类 子类名 对象2 = (子类名)对象1; # 此时可以强制转换回子类对于接口来说,与继承的区别就在于,子类转父类的时候,不能直接修改子类的属性接口中没有属性,但是调用方法仍然是子类的;父类转子类正常弄就行
多态:行为具有表现多种功能的能力。
继承多态:就是通过继承在多个子类中使用重写父类的方法。
-使用的时候可以先让子类对象自动转换成父类对象,然后每次想用哪个子类就可以切换到想要的子类中使用。
-也可以利用多态,调用方法的时候,实参是子类,但是方法定义中的形参是父类,这样可以增强普适性,防止方法膨胀。(也就是说子类可以在参数中转换为父类的型,但是真身还是子类,为多态)
-可用instanceof来判断传入的参数是谁的真身。 instanceof就是用来判断的,左边是要判断的类,后边是用来判断的类。
继承多态的条件:子类对父类有方法重写;父类的引用指向子类的实例,覆写后调用子类的方法。
接口多态:与继承多态形式完全一致,只是继承改为了接口。
包的详解:
包就是文件夹,用来对类进行分组管理的
格式:package file.file; # 所属关系规范:小写字母
运行的时候要先写包名,然后才能在操作台进行使用
同包类使用,不用引入类就可以直接使用不同包类使用,需要先引入类才能使用***且必须是public类才能跨包使用***,引入方法: import 包名.类名;Scanner扫描器:用来输入进行修改数据。
我们最常使用的Scanner构造器就是输入用的
import java.util.Scanner; Scanner input = new Scanner(System.in) # 这里定义了一个input对象 # 我们常用的方法就是用来输入的,用来输入各种不同的类型数据