Java笔记(二)

七.多态

1.概念:

一个引用(类型)在不同情况下的多种状态,通过指向父类的指针调用在不同子类中实现的方法

2.注意事项

父类的引用变量可以引用其子类的实例(对象)

e.g. (1) Animal  an=new Cat();

  (2) Cat cat1=new Cat();

     Animal an= cat1;    //引用子类的对象

八.抽象类

1.必要性:

(1)当父类的方法不能确定时,可以用abstract修饰该类或者方法;

(2)当一个子类的父类是抽象类abstract,在子类中必须将抽象类中所有抽象方法全部实现(重写)

2.使用

abstract class Father

{

  abstract public void show();   

}                           //抽象类(方法)必须前加上abstract,

abstract方法只能出现在abstract类中

抽象方法不可以加{},不可以在抽象类中被实现

 

3.注意事项

1)抽象类不能被实例化

2)抽象类可以没有抽象方法,仍不能被实例化

3)一旦类包含了abstract方法,则这个类必须声明为abstract

4)抽象方法不能有实体

九.接口

1.概念:

给出一些没有内容的方法,封装到一起,到某个类要使用的时候,根据具体情况把方法写出来。

理解:接口是更加抽象的抽象类,抽象类的方法可以有实体,接口里的所有方法都没有方法体。接口体现了程序的多态性和“高内聚低耦合”的思想

2.使用

 class 类名  implements 接口

{  方法;

   变量;

}

3.注意事项

1)一个类实现一个接口时,要求该类把这个接口的所有方法全部实现

【子接口继承的父接口也要在类中实现】

2)接口不能被实例化

3)接口中所有方法不能有主体

4)一个类可以实现多个接口

5)接口中可以有成员变量,但不能用访问控制修饰符privateprotected修饰

     只能有publicstaticfinal类型的变量

     接口中的变量本质上都是static且为final(必须初始化,不能更改)的,不管加不加static修饰符

6)【经验】通常把常用的变量定义在接口中,作全局变量使用

访问形式:接口名.变量名

7)接口可以继承其他接口,但不能继承类

8)子类可以同时继承类和实现接口

  e.g.  class Son extends father implements Interface

      {

 

}

 

4.类的继承&接口的实现【CarShop】

(1)Java的继承是单继承,继承是层级式的,不太灵活;

(2)多接口的继承可以看做对继承的一种补充;

(3)实现接口可以在不打破继承关系的前提下对类的功能进行扩展,非常灵活

 

 

5.前期绑定&后期绑定

(1)前期绑定/静态绑定:

程序运行之前绑定,由编译器和连接程序实现,比如static和final方法,也包括private方法,隐式的final;

(2)后期绑定/动态绑定

     运行时根据对象的类型进行绑定,由方法调用机制实现;

(3)多态是在后期绑定的机制上实现的,好处是消除了类之间的耦合关系,更加灵活。

十.final 变量/方法

1.概念:

(1)final 可以修饰变量或者方法或者一个类;

(2)当父类的某个方法不希望被子类覆盖时,可以用final 修饰;

(3)当类中某个变量的值不希望被修改时,可以用final 修饰,命名为 **_**_**;

     如果一个变量为final,称其为常量,必须赋初值,不能先定义后赋值;

(4)当某个类不希望被继承时,可以用final 修饰该类;

2.什么时候用final

(1)某些变量的值不变,如PI=3.1415926……

(2)某个类不被其他类继承;

(3)类的某个方法不希望被修改

十一.Java数组

1.      一维数组的定义

(1)      int a[]=new int[5];

(2)      int a[]={1,2,3};

2.      求数组长度

for ( int i=0; i<a.length ; i++)

3.      对象数组

(1)初始化

   Dog dogs[]=new Dog[5];

//内存中分配5块空间,但每个单元都指向空指针null,即没有对真正的对象初始化;

(2)赋值:需再次为每个对象分配空间 

 Dog[0]=new Dog();

  //Dog[0]内存空间存放真正Dog对象的引用(地址);

  for(inti=0;i<dogs.length;i++)

{

  dogs[i]=new Dog[i];

}

4.      注意事项:

数组大小必须事先指定

5.      从控制台输入数据

import java.io.*;//引入输入流的包

InputStreamReaderisr=new InputStreamReader(System.in);     BufferedReader br=new BufferedReader(isr);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值