Java学习第八天
package com. lixiaochuan. oop. Demo07 ;
public class Student {
private static int age;
private double score;
public void run ( ) {
}
public static void go ( ) {
}
public static void main ( String [ ] args) {
int year = Student . age;
double point = ( new Student ( ) . score) ;
Student . go ( ) ;
new Student ( ) . run ( ) ;
}
}
package com. lixiaochuan. oop. Demo07 ;
public class Person {
{
System . out. println ( "匿名代码块" ) ;
}
static {
System . out. println ( "静态代码块" ) ;
}
public Person ( ) {
System . out. println ( "构造方法" ) ;
}
public static void main ( String [ ] args) {
Person person1 = new Person ( ) ;
System . out. println ( "================" ) ;
Person person2 = new Person ( ) ;
}
}
package com. lixiaochuan. oop. Demo07 ;
import static java. lang. Math . PI;
import static java. lang. Math . random;
public class Test {
public static void main ( String [ ] args) {
System . out. println ( random ( ) ) ;
System . out. println ( PI) ;
}
}
抽象类
不能new这个抽象类,只能靠子类去实现它:约束! 抽象类中可以写普通的方法 抽象方法必须在抽象类中 抽象的抽象:约束
package com. lixiaochuan. oop. Demo08 ;
public abstract class Action {
public abstract void doSomething ( ) ;
}
约束 定义一些方法,让不同的人实现~ 接口中的所有定义的方法其实都是抽象的 public abstract 常量~ public static final 接口不能被实例化~接口中没有构造方法 implements可以实现多个接口
package com. lixiaochuan. oop. Demo09 ;
public interface UserService {
int AGE = 99 ;
void add ( String name) ;
void delete ( String name) ;
void update ( String name) ;
void query ( String name) ;
}
== == == == == == == == == == == == == == == == =
package com. lixiaochuan. oop. Demo09 ;
public interface TimeService {
}
== == == == == == == == == == == == == == == == ==
package com. lixiaochuan. oop. Demo09 ;
public class UserServiceImpl implements UserService , TimeService {
@Override
public void add ( String name) {
}
@Override
public void delete ( String name) {
}
@Override
public void update ( String name) {
}
@Override
public void query ( String name) {
}
}
package com. lixiaochuan. oop ;
import com. lixiaochuan. oop. Demo10. Outer ;
public class Application {
public static void main ( String [ ] args) {
Outer outer = new Outer ( ) ;
outer. out ( ) ;
Outer. Inner inner = outer. new Inner ( ) ;
inner. in ( ) ;
inner. getID ( ) ;
}
}
package com. lixiaochuan. oop. Demo10 ;
public class Outer {
private int id;
public void out ( ) {
System . out. println ( "这是外部类的方法!" ) ;
}
public class Inner {
public void in ( ) {
System . out. println ( "这是内部类的方法!" ) ;
}
public void getID ( ) {
System . out. println ( id) ;
}
}
}
package com. lixiaochuan. oop. Demo10 ;
public class Test {
public static void main ( String [ ] args) {
new Apple ( ) . eat ( ) ;
}
}
class Apple {
public void eat ( ) {
System . out. println ( "1" ) ;
}
}
异常Exception
检查性异常:最具代表的检查性异常时用户错误或问题引起的异常,这是程序员无法预见的。例如 要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。 运行时异常:运行时异常是可能被程序员避免的异常,与检查性异常相反,运行时异常可以在编译时被忽略。 错误ERROR:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如 ,当栈溢出是,一个错误就发生了,它们在编译也检查不到。
异常体系结构 Error
Error类对像由Java虚拟机生成并抛出 ,大多数错误与代码编写者所执行的操作无关 。 Java虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需的内存资源时,将出现PutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。 发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。 Exception分支中有一个重要的子类RuntimeException(运行时异常) ArrayIndexOutOfBoundsException(数组小标越界) NullPointerException(空指针异常) ArithmeticException(算术异常) MissingResourceException(丢失资源) ClassNotFoundException(找不到类)等异常,这些异常时不检查异常,程序中可以选择捕获处理,也可以不处理。
package com. lixiaochuan. exception ;
public class Test {
public static void main ( String [ ] args) {
int a = 1 ;
int b = 0 ;
try {
if ( b== 0 ) {
throw new ArithmeticException ( ) ;
}
System . out. println ( a/ b) ;
} catch ( ArithmeticException w) {
System . out. println ( "程序出现异常,变量b不能为0" ) ;
} finally {
System . out. println ( "finally" ) ;
}
}
}
自定义异常 用户自定义异常类,只需继承Exception类即可。
创建自定义异常类; 在方法中通过throw关键字抛出异常对象; 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作; 在出现异常方法的调用者中捕获并处理异常。