坐标地址

看清楚-----那个飞的风筝才是我

 

Java学习04 (第一遍)

封装、抽象、继承和多态。
封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性;


抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。比如鸟就是一个抽象实体,因为抽象实体并不是一个真正的对象,它的属性还不能完全描述一个对象,所以在语言中体现为抽象类不能实例化;


继承:继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体;


多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为;

 

对象就是实例,实例就是对象类对象的模板,对象是类的一个个体对象总是存在内存中的

 

Java类变量与类方法一般指的是静态变量与静态方法(属于公共的属性与方法),动态称为实例变量与实例方法,类方法内访问类变量,用非静态出错,动态方法可以通用,java中规则:类变量原则上用类方法去访问或操作

构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。

this是属于一个对象,不属于类的。this不能在类定义的外部使用,只能在类定义的方法中使用

4种访问级别的访问范围

访问级别

访问控制修饰符

同类

同包

子类

不同包

继承

公  开

Public

受保护

Protected

默  认

没有修饰符

私  有

private

 

 

方法重载(overload)和方法覆盖(override)

方法重载
简单的说:方法重载就是在类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。
注意事项:
1、方法名相同
2、方法的参数类型,个数,顺序至少有一项不同
3、方法返回类型可以不同(只是返回类型不一样,不能构成重载)
4、方法的修饰符可以不同(只是控制访问修饰符不同,不能构成重载)

方法覆盖
有两点一定注意:
1、子类的方法的返回类型,参数,方法名称,要和父类的返回类型,参数,方法名称完全一样,否则编译出错。
2、子类方法不能缩小父类方法的访问权限。

 

实现多态有两种方式:1、继承;2、接口

多态--注意事项:

java允许父类的引用变量引用它的子类的实例(对象)

Animal an=new Cat();//这种转换时自动完成的

//Animal an=new Animal();抽象类不允许实例化

 Animal an=new Cat();//父类的引用变量引用它的子类的实例

abstract class Animal{

abstract public void cry();//抽象方法 abstract抽象方法只能在子类中实现。抽象类中可以没有abstract抽象方法 - 一旦类包含了abstract抽象方法,则这个类必须声明为abstract抽象类 - 抽象方法是没有花括号的{}

}

class Cat extends Animal{

public void cry(){       //当一个子类继承的父类是abstract抽象类的话,需要把抽象类的抽象方法全部实现。

}

}

 

接口是更加抽象的抽象的类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低偶合的设计思想。

接口--注意事项

1、接口不能被实例化

2、接口中所有的方法都不能有主体。错误语法例:void aaa(){}←(注意不能有花括号)

   接口可以看作更加抽象的抽象类。

3、一个类可以实现多个接口

4、接口中可以有变量[但变量不能用private和protected修饰]

  a、接口中的变量,本质上都是static的而且是final类型的,不管你加不加static修饰

  b、在java开发中,我们经常把常用的变量,定义在接口中,作为全局变量使用

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

5、一个接口不能继承其它的类,但是可以继承别的接口

 

重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现

 

 

实现接口VS继承类

java的继承是单继承,也就是一个类最多只能有一个父类,这种单继承的机制可保证类的纯洁性,比C++中的多继承机制简洁。但是不可否认,对子类功能的扩展有一定影响。所以:

1、实现接口可以看作是对继承的一种补充。(继承是层级式的,不太灵活。修改某个类就会打破继承的平衡,而接口就没有这样的麻烦,因为它只针对实现接口的类才起作用)

2、实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活。

posted on 2017-06-27 09:37  Augur  阅读(208)  评论(0编辑  收藏  举报

导航