黑马程序员-----java面向对象

来源:互联网 发布:银行对接软件 编辑:程序博客网 时间:2024/06/07 09:59

------- android培训、java培训、期待与您交流! ----------

1.面向对象思想:
基于面向过程的思想,找一个对象来解决问题,对象包含了解决问题的步骤.
基本步骤:
定义类--> 创建对象-->调用方法 
2.特点:
1)是一种更符合我们思想习惯的思想;

2)可以将复杂事情简单化;

3)从执行者变成指挥者;

4)角色发生了转变。
3.面向对象思想三大特征:封装,继承,多态。
4.类和对象  
定义类的步骤
分析:
类 {
属性
行为
}


|
|
class 类{
成员变量
成员方法 
}
使用对象的步骤
测试类中,创建对象 
数据类型 对象名 = new 数据类型();

5.封装的步骤 
1.使用private隐藏成员变量
2.提供公共的访问方式,也就是对应的get /set 方法 ,对成员变量进行取值/赋值的操作
6.完整的类
目前包括两个部分 ,成员变量和成员方法,
成员方法又分为两个部分--get/set 和 特有方法 
格式如下: 
class 类名 {
成员变量 
成员方法 
get /set 


特有方法,比如吃饭,学习,介绍等 
eat(){}
show(){}
}
7.代码块 : 

局部代码块:在方法中出现,限定变量生命周期,及早释放,提高内存利用率
构造代码块:成员位置,每次构造方法调用前
静态代码块:成员位置,加static{},加载类时.只执行一次.

8.继承:

多个类中存在相同属性,行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

格式 :
class Zi extends Fu{ 
}
特点: 单继承  :
一个子类只能继承一个父类

  多层继承:子类还可以有子类, 父类也可以有父类

继承的好处 
1.提高代码复用性 
2.提高代码维护性
3.让类与类发生了关系,是多态的前提 
弊端 
耦合性增强,违背了我们的开发原则
高内聚,低耦合

子类只能继承父类所有非私有成员(成员方法和成员变量)

子类不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法

9.多态:

一种事物的多种形态

多态的前提条件 :
1.满足继承关系或者实现
2.方法重写
3.父类引用指向子类对象 Fn f=new Zi()

成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
构造方法:编译看左边,运行看左边 
静态方法:编译看左边,运行看左边

多态的好处:提高了代码的维护性(继承保证);提高了代码的扩展性(多态保证)
多态的弊端:不能使用子类特有的功能(子类有,而父类没有的方法)

不过可以向下转型(强制转换)格式:子类类型    变量名 =(子类类型)父类变量名

10.抽象类

抽象类:描述不清楚的类 

关键字 : abstract 抽象 
格式: abstract class 类名{}

抽象类的特点:
1.抽象类中可以非抽象的方法,但是如果有抽象方法,此类必然是抽象类
2.虽然抽象类不能new,但是可以有构造方法.作用:给子类实例化用的
3.子类的特点:
1.要么是抽象类
2.要么必须重写所有的抽象方法.
成员的特点:
A:抽象类的成员特点
a:成员变量:既可以是变量,也可以是常量。
b:构造方法:有。
用于子类访问父类数据的初始化。
c:成员方法:既可以是抽象的,也可以是非抽象的。

11.接口

接口的本质:一种规则 
如果你定义接口,就是在定义一种规则.
接口作用:
使用(实现)接口,就是扩展了功能.

接口的特点: 
1.接口中的方法,必须是抽象
2.接口的实现类,必须重写接口中所有的抽象方法.
(其实接口的实现类,也叫接口子类)

12.static

特点:随着类的加载而加载;优先于对象存在;被类的所有对象共享

注意事项:

在静态方法中是没有this关键字的

静态方法只能访问静态的成员变量和静态成员方法

13.内部类

定义在类中的类

成员位置: 类中方法外 
·局部位置:  方法内部
在成员位置内部类,叫成员内部类 
在局部位置内部类,叫局部内部类 
局部内部类:
定义在方法内部 
使用: 在方法内,创建内部类对象 
·

匿名内部类:

前提:存在一个类或者是接口 
格式: 
new 接口名(){
重写接口中所有方法;
}

14.代码

/*老大是大力士,老二是顺风耳千里眼,老三金刚不坏之身,老四会喷火,老五会喷水,老六会隐身,老七的宝葫芦可以吸进万物。定义葫芦娃 abstract class  HuLuWa {int num;String color;HuLuWa (){}HuLuWa(String color ,int num){this.color = color ;this.num = num;}//get /set public abstract void saveGrandpa()  //每个娃救爷爷的方式是不一样的,我们描述不清}interface SuperPower{//大力士功能dalishi();//千里眼 顺风耳qianliyanShunfenger();}class DaWa extends HuLuWa implements SuperPower{DaWa (){}DaWa(String color ,int num){this.color = color ;this.num = num;}实现抽象方法public  void saveGrandpa(){syso("我是 +name+"爷爷我来了");}//重写dalishi()public void dalishi(){syso("我力气大,我搬山救爷爷.....")}qianliyanShunfenger(){}}class ErWa extends HuLuWa implements SuperPower{ErWa (){}ErWa(String color ,int num){this.color = color ;this.num = num;}实现抽象方法public  void saveGrandpa(){syso("我是 +name+"爷爷我来了");}//大力士功能dalishi(){}//千里眼 顺风耳qianliyanShunfenger(){syso("我打听打听 , 救爷爷.....");}}一个接口 一个抽象类两个普通类*/class  HuLuWaTest{public static void main(String[] args){DaWa dw = new DaWa("大娃","红色",1);dw.saveGrandpa();dw.dalishi();//dw.qianliyanShunfenger();}}//定义接口interface SuperPower{// 一共是 七个超能力 // 大力士 public abstract void dalishi();// 千里眼 顺风耳public abstract void qianliyanShunfenger();}//定义抽象类 abstract class HuLuWa{//自己加 name  String name;int num;String color;HuLuWa (){}HuLuWa(String name, String color ,int num){this.name = name ;this.color = color ;this.num = num;}//get /set public String getColor(){return color;}public void setColor(String color){this.color = color;}public int getNum(){return num;}public void setNum(int num){this.num = num;}//public abstract void saveGrandpa(); //每个娃救爷爷的方式是不一样的,我们描述不清public  void saveGrandpa(){System.out.println("我是 "+ name +" , 爷爷我来了");}}//定义普通类class DaWa extends HuLuWa implements SuperPower{DaWa (){}DaWa(String name, String color ,int num){this.name = name ;this.color = color ;this.num = num;}////实现抽象方法//public  void saveGrandpa(){//syso("我是 "+ name+" , 爷爷我来了");//}//重写dalishi()public void dalishi(){System.out.println("我力气大,我搬山救爷爷.....");}}

总结:

面向对象是一种思想,一开始理解会有点困难,不过慢慢就好了,后面的接口和多态都是以后程序开发中常用的,需要加强练习,对任何一种事物都能剖析出其中的成员方法和成员变量,达到万物皆对象的地步,对以后学习大有帮助






0 0