一. 类型转换
1.由低到高:
Person person=new Student();(Person是Student的父类)
2.由高到低:
Person person=new Person();
Student student=(Student)person;(Person是Student的父类)
二. 抽象类
1.由关键字abstract实现,格式:public abstract class Abstract
2.抽象类中含有抽象方法,但是包含抽象方法的类必须是抽象类
3.抽象类中的抽象方法只能是方法名,不能存在方法体,普通方法可以包含方法体
4.继承抽象类的普通类必须重写抽象方法
5.普通静态方法不能调用非静态方法和非静态常量,但是非静态方法可以调用静态方法和静态常量,特殊的静态main方法可以调用非静态方法和非静态常量,因为main方法体内可以实例化对象。
6.抽象类虽然有构造函数,但是不能实例化对象。
三. 接口
1.使用接口需要用到interface关键字,格式:public interface ss{}
2.接口里的任何函数都只有方法名,没有方法体,方法默认为public abstract,变量默认为public static final。
3.继承接口需要用到implements, 可实现多继承,但是继承接口的类,必须重写接口的全部方法。
4.接口不能实例化对象,没有构造函数
5.接口也是一种约束
四. 外部类和内部类
1.外部类:public class Outer
2.内部类:public class Inner
3.可写在类里面的类是内部类,内部类可调用外部类的私有属性
4.调用内部类的函数和属性
5.一个java文件可以有多个个class,但是只能有一个外部类public class。
五.异常
1.异常处理机制
(1)抛出异常
(2)捕获异常
2.异常处理关键字
(1) try,catch,finally,throw,throws
(2)可以存在多个catch,越往下范围越大
(3)Throwable包括:Error和Throwable
(4)自动构建异常处理机制:Ctrl+Alt+T
(5)throw通常用在单独的方法中,主动抛出异常,main方法使用try catch进行捕获。
也可以在单独的方法中捕获异常,异常被捕捉之后,单独的方法中异常后面的代码才可以运行:
(6)throws是向方法外抛出异常,并用try catch捕获。(需要有异常的代码)
或者通过throw抛出异常,再用throws把异常抛出方法外,让调用方法的函数处理异常
(7)在处理异常时,尽量采用逻辑区合理规避同时辅助try-catch处理
六. 输入流
1.导入包的方式:import java.util.Scanner
2.创建Scanner对象的基本语法:Scanner s = new Scanner(System.in);
3.读取前,需要使用new Scanner(System.in).hasNext()或者new Scanner(System.in).hasNextLine()判断是否还有输入,然后用next()和nextLine()获取输入。
4.next()会把有效字符之后的空白作为结束符,而nextLine()只会把enter当成结束符。
5.(1)获取整数hasNextInt(),nextInt() (2)获取小数hasNextFloat(),nextFloat() (3)接受多个不同类型的数字,数字之间以空格符或enter隔开,以end符结束,hasNextDouble(),nextDouble