Java基础(七)★接口★内部类★包

final

final可以修饰数据,方法,类

final修饰某个量的时候,这个量称之为常量---定义好之后不可改变---对于基本类型,指的是值不可变;对于引用类型,指的是地址不可变,但是其中的属性值可以改变

public class Demo {
private final int i;
 
public Demo(){
    this(5);
} 
public Demo(int i){
    this.i = i; 
}
}
Demo d = new Demo(5);

final修饰方法称之为最终方法---不可被重写--但是可以被继承,可以进行重载

final修饰类称之为最终类---不可被继承---最终类中的方法无法被重写

子类在继承父类的时候,哪些东西是在子类中不可见的?---private,代码块,构造函数

abstract抽象方法

如果所有的子类中存在了一些名称一致而细节不同的方法的时候,这个时候可以在父类中声明该行为,此时声明行为的时候不需要添加方法体,所以此时该方法就形成了抽象方法---abstract修饰---抽象方法所在的类一定是抽象类。

抽象类不能实例化/创建对象,但是有构造方法/函数

抽象类中可以有抽象方法也可以没有抽象方法。抽象类中可以定义一切的属性以及普通方法和静态方法。

抽象方法之间可以重载吗?---可以---重载只关心方法名和参数列表

抽象方法可以用static/final/private修饰吗?---不可以

如果一个抽象方法的权限修饰符是默认权限,对子类是否有要求?---要求父子类必须同包

最终类可以是抽象类吗?---不可以

接口

interface来声明一个接口。---implements来实现一个接口。类在实现接口之后需要实现接口中所有的抽象方法。

implements关键字让类和接口之间产生练习,这种联系称之为实现。

接口中的方法默认是抽象方法而且只能是抽象方法(JDK1.7及其以前)

单继承,多实现---一个类只能继承一个父类,但是可以实现多个接口---一旦出现了多实现,那就必不可免的可能会导致方法的混乱---针对的是类

interface A{
void m();// 默认是public修饰
}
public class B implements A{
void m(){	// 接口中的方法默认是public修饰---重写 一大 原则    // 需要添加修饰符public
System.out.println(“B m()”);
}
}

Java中,接口可以继承接口---接口之间是多继承

接口中不允许定义构造方法---虽然接口在编译完成之后会产生class文件,但是接口不是类

接口中的方法默认是抽象方法,接口中的量默认是静态常量---接口中可以定义属性,默认用public static final修饰

抽象类在实现接口之后一定要实现这个接口中的所有的抽象方法吗?---不一定

接口可以在一定程度上统一结构实现方法的统一调用,但是可能会导致代码的冗余

接口可以作为模板---反射

内部类

定义在类或者接口中的类就称之为内部类

方法内部类

定义在方法中的类--只能定义它的方法中使用;

方法内部类中不能定义静态属性和静态方法但是可以定义静态常量;

方法内部类可以使用外部类中的一切属性和方法,但是如果使用当前方法的数据的时候,要求这个数据是一个常量

外部类$数字内部类.class

成员内部类

定义在类内方法外的类

静态内部类

static修饰的内部类

匿名内部类

匿名内部类本质上是继承了对应的类或者是实现了对应的接口---只要一个类可以被继承,那么这个类就可以出现匿名内部类的形式。

如果匿名内部类定义到了方法中,此时匿名内部类的使用规则和方法内部类一致

如果匿名内部类定义到了类中,此时匿名内部类的使用规则和成员内部类一致、

扩展:内部接----定义在类或者接口中的接口----类中的接口默认是静态的,接口中的类或者接口都是用static修饰的

声明包用的package---一个Java文件中只允许存在一个package语句,而且这个package语句必须放在整个Java文件的首行

package 包名;

import---导包语句

import java.util.*---表示导入util包下的所有的类但是不包括子包下的类--- *是一个通配符

java.lang---核心类库---一个Java程序运行之前会先自动的把这个包下的所有的类加载到了方法区---在使用的时候不需要导包

java.util---工具包---存放了一系列简化操作的工具类

java.io---数据传输

java.net---网络传输

java.math---数学运算

java.sql---数据库

java.awt---图形用户界面---几乎不用

java.security---数据安全

java.text---格式化

javax.*---扩展包

org.*---第三方厂商和开源社区提供的包

注意:包名不能以java,javax,org开头


发布了1 篇原创文章 · 获赞 12 · 访问量 6811
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章