异常:
try:有可能出现异常的代码
catch:出现异常后,进行捕获(异常处理)
finall:不管有无异常总会执行的代码(释放资源)
throw:手动输出(抛出异常)
throws:自动输出(抛出异常)
try:有可能出现异常的代码
catch:出现异常后,进行捕获(异常处理)
finall:不管有无异常总会执行的代码(释放资源)
throw:手动输出(抛出异常)
throws:自动输出(抛出异常)
在方法参数传递时:
基本数据类型,形参时实际参数的一个副本(不会互相影响)
引用类型传参,形参和实参是会互相影响的
基本数据类型,形参时实际参数的一个副本(不会互相影响)
引用类型传参,形参和实参是会互相影响的
java三大特性:
封装、继承、多态、
继承
1.继承概述
父类、超类、基类
子类、派生类
Animal的基本属性: type、skin、legCount
方法:eat()|breathe()、
Tiger:来继承Aniaml类,可以继承上面所有的,还可以加自己独有的,比如eatmeat()等等
public class Tiger extends Animal{}
extends只能继承一个类,java不支持多重继承
子类继承父类之后,子类可以调用父类的属性和方法,满足条件也可以重写父类的属性和方法(final类型就不行),还可以增加自己的属性和方法。
继承
1.继承概述
父类、超类、基类
子类、派生类
Animal的基本属性: type、skin、legCount
方法:eat()|breathe()、
Tiger:来继承Aniaml类,可以继承上面所有的,还可以加自己独有的,比如eatmeat()等等
public class Tiger extends Animal{}
extends只能继承一个类,java不支持多重继承
子类继承父类之后,子类可以调用父类的属性和方法,满足条件也可以重写父类的属性和方法(final类型就不行),还可以增加自己的属性和方法。
2.实现继承
super:通过它来访问父类对象的属性和方法。
在调用子类的构造器的时候,如果没有显示的写出super,那么编译器会默认加上super()无参构造器,默认将父类一层层地调用。
如果想调用父类的有参的构造器,那么就必须显示的调用super(),编译器不会默认加上的。
创建子类对象的过程就是从底层的基类开始往上,一层层地调用构造方法。
在调用子类的构造器的时候,如果没有显示的写出super,那么编译器会默认加上super()无参构造器,默认将父类一层层地调用。
如果想调用父类的有参的构造器,那么就必须显示的调用super(),编译器不会默认加上的。
创建子类对象的过程就是从底层的基类开始往上,一层层地调用构造方法。
super()、super(参数)都必须放在方法的第一个语句中。
3.继承关系
java只支持单继承关系。
多态
一个对象具有多种状态。这是继承特性影响的。
比如,我们的例子里:
Tiger可以看作Tiger也可以看作Animal
Cat可以看作Cat也可以看作Animal
Dog可以看作Dog也可以看作Animal
所以Animal有四种状态
比如,我们的例子里:
Tiger可以看作Tiger也可以看作Animal
Cat可以看作Cat也可以看作Animal
Dog可以看作Dog也可以看作Animal
所以Animal有四种状态
抽象类
1.抽象类的定义
抽象类是为子类提供一个规范,用抽象方法来体现。
public abstract 类名{
//类体
//修饰符 abstract 返回值类型 方法名(参数列表);
//有无abstract是区别是否是抽象类的依据
}
抽象方法没有方法体:public abstract void test();
普通方法有方法体:public abstract void test(){//方法体内代码};
1.定义一个类,如果这个类是抽象类,那么这个类中至少有一个抽象方法。
2.在抽象类中的方法不一定是抽象方法,但是含有抽象方法的类一定是抽象类。
}
抽象方法没有方法体:public abstract void test();
普通方法有方法体:public abstract void test(){//方法体内代码};
1.定义一个类,如果这个类是抽象类,那么这个类中至少有一个抽象方法。
2.在抽象类中的方法不一定是抽象方法,但是含有抽象方法的类一定是抽象类。
2.抽象类的使用
@Override 用来检测是否重写成功
1. 一个类继承了抽象类,就必须要重写该抽象类的所有的抽象方法。该类的非抽象方法可以不要重写。
2.如果一个类没有重写抽象类的抽象方法,那么这个类也要定义为抽象类。
public abstract void catchAnimal(Animal animal);//子类的类型不一样,所以不在这里具体实现,在子类中具体实现