JavaSE Day13 知识总结

final关键字:

  1. 一旦被它修饰的变量,成为了常量,无法改变

            Public static  final int a=10;
  2. 一旦被它修饰的方法,该方法就无法被重写

  3. 一旦某个类被final修饰,该类就断子绝孙,无法被继承;

                Final class 类名称:

利用final关键字的目的:

      基于底层的安全考虑,为了防止篡改底层代码,导致串码。

提高代码的利用率。


内部类:

 当内部类在外部类成员位置上的时候,内部类就是外部类的成员之一

定义在某个类内部的类,它可以直接访问外界无法访问的私有成员变量

什么时候使用内部类:

在描述事物,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含这发动机这个事物,这时发动机就可以使用内部类来描述。即就是内部事物必须寄宿在外部事物内部。

内部类访问规则:

内部类可以直接访问外部类中的成员,但外部类不能直接访问内部类,若要访问,必须创建内部类对象才能访问

非静态非私有内部类

当内部类在外部类成员位置上的时候,内部类就是外部类成员的一份子。这时这个内部类就可以使用成员修饰符修饰,比如public、static、private

如果内部类的权限是非私有的,就可以在外部类以外的其他类中访问。即可以通过创建外部类对完成访问内部类。

 静态的非私有内部类

当内部类在外部类成员位置上被static修饰时,由于静态可以直接使用类名调用,则创建内部类对象的方式:

访问静态内部类的静态成员

由于内部类是静态的,可以直接使用外部类名调用内部类,而内部类的成员也是静态的,这时同样可以通过类名调用内部类的静态成员。

使用static修饰内部类,该内部类属于其外部类,而不属于外部类的对象;静态内部类可包括静态成员也可包括非静态成员。根据静态成员不能访问非静态成员的规定,所以静态内部类不能访问外部类实例成员,只能访问外部类的静态成员。

非静态内部类细节

注意非静态内部类中不能定义静态成员变量和静态成员函数。但可以定义静态成员常量。原因常量在生成字节码文件时直接就替换成对应的数字。当内部类在外部类成员位置上被私有修饰,在外部类意外的其他地方是无法访问的。只能在外部类中访问

静态内部类只是相对于外部类来说的,静态内部类的内部还是可以正常定义静态/非静态对象和方法。


多态

在继承的基础上,父类引用指向子类实例

Public class Animal{

Public void say(  ){

System.out.println("我是一只猫");

}

}


Public calss Cat extends Animal{

Public void sayhello( ){

System.out.println(“这是猫的方法”);}

Public void say {
//重写方法

System.out.println("我是一只猫");

}

}


Public class Test{
public static void main(String[ ] args){

         //创建一个动物类,只能调用动物的方法

Animal animal = new Animal( );

animal .say( );

//创建一个Cat类,可以调用自身方法,也能调用父类方法

Cat cat = new Cat( );

cat.say( );

cat.sayhello(   );

//如果使用多态创建的猫类,父类引用,父类引用无法访问到子类自身定义的方法,但父类引用可以直接操作子类的重写方法。

Animal cat1 = new Cat( );【把创建的Cat实例对象,赋给了Animal类,放大类别,详细化功能,因为子类可能存在新功能】

cat1 .say( );只能调到say ),不能调用sayhello );默认为父类型类型,用父类代指子类,访问不到子类自己的方法。

可以通过父类方法重写,调用子类方法。

例如:人类给不同动物治病,

 


 抽象方法

如果一个方法不需要实现体(函数内容),只需要函数声明,那么我们就可以把它声明为抽象方法

抽象方法:没有方法体的方法,java中使用abstract关键字声明的方法就是抽象方法

格式 访问修饰符 abstract 返回值类型 方法名称(参数列表);

抽象方法必须要放在抽象类中。

Public abstract class Animal{

Public abstract cure() {
}

}

抽象类:由abstract关键字修饰的类

有抽象方法的类一定的抽象类,但抽象类中不一定有抽象方法;如果一个类继承了抽象类,就必须实现该类的抽象方法!!!如果一定不实现,则将这个子类继续声明为抽象类;

抽象类的实例化:

1,使用多态来实现:

Cat an = new QQ( );

an.cure( );

2,使用匿名内部类:

Cat cat = new Cat(){

Pulic  void  cure( ){                                   //匿名内部类相当于Cat的子类,通过方法重写来实现Cat的实例化

}


接口:本质是特殊类,特殊抽象类

接口中所有方法都是没有实现的(抽象方法)

接口中的所有属性和方法默认都public , 即便你没有使用public关键字修饰。

定义接口:Java中用interface关键字来定义接口,子类用implement关键字实现接口一旦实现了接口,就必须实现所有抽象方法,如果不想实现就必须将子类声明为抽象类。

java中,接口可以多实现的,补全全部接口的方法

接口也无法直接实例化,必须使用子类,以多态的形式完成实例化;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值