Java基础知识小结 五 (自学)

                                                                                      接口



接口:初期可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表示。
class :用于定义类。
interface :用于定义接口。


接口中的成员修饰符是固定的。
1,成员常量:public static final
2,成员函数:public abstract
接口中的成员都是public的。如果没有书写成员常量,成员函数的固定格式,只要是interface的类系统会默认添加。


    接口是不可以创建对象的,因为有抽象方法。需要被子类实现,子类对接口中的方法全部都覆盖后,子类才可以实例化。否则子类是一个抽象类。
    接口用implements来实现实例化。


接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。一个类可以实现多个接口。
例子:
interface Inter
{
public abstract final int x = 3;
public static void show ();
}
interface Demo
{
public static void method ();
}
//多实现
class Test implements Inter,Demo
{
public static void show (){}
public static void method (){}
}






一个类在继承一个类的同时,还能实现多接口。
例子:
interface Inter
{
//成员变量
public abstract final int x = 3;
//成员方法
public static void show ();
}
interface Demo
{
//成员方法
public static void method ();
}


class Demo1
{
public void function(){}
}
class Test extends Demo1 implements Demo,Inter
{
public void test(){}
}




接口和接口直接存在多继承。
例子:
interface A
{
public static void  method ();
}
interface B 
{
public static void method1 ();
}


interface C extends B,A
{
public static void  method (){}
public static void method1 (){}
public void method2(){}
}
interface D extends C
{
public static void  method (){}
public static void method1 (){}
public void method2(){}
public void method2(){}
}


类和类是继承的关系,类和接口是实现关系,接口和接口之间也是继承关系。


接口的特点:
1,接口是对外暴露的规则。
2,接口是程序的功能扩展。
3,接口可以用来多实现。
4,类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
5,接口与接口之间可以有继承关系。




  


      多态


多态:事物存在的多种体现形态。
1,多态的基本体现
    父类或者接口的引用指向或者接收自己的子类对象。


2,多态的前提
    (1)类和类需要存在关系,继承或者实现关系。
    (2)要有覆盖操作。


3,多态的好处
    多态的存在提高了程序的扩展性和后期可维护性


4,多态的弊端
    只能使用父类的引用访问父类中的成员。


5,多态的应用
    强制将父类的引用,转换成子类类型。向下转型。
    不可以将父类对象转换成子类类型。能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。多态自始至终都是子类对象在变化。




判断引用数据类型的关键字:
instanceof




class Fu
{
void method1()
{
System.out.println("fu method_1");
}
void method2()
{
System.out.println("fu mehtod_2");
}
class Zi extends Fu
{
void method1()
{
System.out.println("zi method_1");
}
void method3()
{
System.out.println("zi method_3");
}
}
public static void main(String[] args) 
{
//Fu是引用型变量,Zi是对象所属
Fu f = new Zi();




f.method1();
f.method2();
//Fu类引用中没有method3的方法。
f.method3();
}
}                结果:编译不通过




多态(父类引用指向子类对象)的特点:
(非静态)成员函数的特点:
    在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有编译通过,如果没有编译失败。
    在运行时期:参阅对象所属的类中是否有调用的成员。
    简单一句话:成员函数在多态调用时,编译看左边,运行看右边。


(非静态)成员变量的特点:
    无论在编译的时还是在运行的时候,都参考引用型变量所属的类。(也就是等号左边)的类)




在多态中,静态成员函数的特点:
    无论编译还是运行,都参考“引用型”变量所属的类中的方法(等号左边)。因为是静态的所以直接进内存中。不需要对象的调用。可以直接用类名使用。


静态成员变量也是一样。无论编译还是运行,都参考“引用型”变量所属的类中的方法(等号左边)。




    Object类


Object:是所有对象的直接或者间接父类。该类中定义的肯定是所有对象都具备的功能。
equals(Object obj)指示其他某个对象是否于此对象"相等".
     Object类中已经提供了对对象是否相同的比较方法。如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的功能,建立自己特有比较内容即可。这就是覆盖。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值