黑马程序员——Java面向对象总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


什么面向对象:

个人分析觉得:在程序设计里,面向对象是一种相对说法,相对于面向过程而言的;面向“对象":即重点在于“对象";而面向过程:则重点在于“过程”,简单说:就是我我们看待事物在眼光上注重点不一样;比如说:我们评判一个女孩漂亮与否,有的人看重外表,有的人则看重“心灵”,只是侧重点不一样。

举个例子:把大象装进冰箱!

面向对象

(注重动作所操作的承受者[“对象”])

“冰箱”打开

“大象”装入

“冰箱”关闭

面向过程

(注重一系列动作即过程)

打开”冰箱

“装入”大象

“关闭”冰箱

类:

通俗的说类就是“一类事物的简称”,并且这些事物至少具有一点“共同的”特征.比如说:动物就是一个类

对象:

就是某一类中一个具体的(就是可以具体描述出来的)东西,比如:动物(类)里的“狗”就是一个对象。(个人觉得对象相对于类而言的,因为狗又可以分好多种,‘狗’相对于‘哈士奇’是一个类,‘哈士奇’是‘狗’类的一个具体对象)在生活中就拿描述汽车来说,我们都知道汽车都有4个轮子; 都有跑的功能

可以如下描述: 类 汽车  

属性: 4个轮  

功能: 跑

那么怎么在Java中描述汽车这类呢?

<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;">class car{
    int wheel=4;//属性: 4个轮
    void run(){//方法(功能): 跑
    System.out.println("是汽车都会跑");
    }
}</span></span></span>
那么可见“出租车”应当是“汽车”这类的一个具体化(实实在在的例子即“实例”)对象,那自然出租车也就具备了汽车这类所具备的“共有”属性功能!如何创建一个出租车对象呢?java中通过new关键字来创建一个类的实例即对象,也叫类的实例化,就是把类具体化成一个实例嘛!格式:类名 对象名 = mew 类名 () Car texi = new Car();创建了“出租车”对象(实例)之后那么它也就有了如下“自己”的属性和功能。

<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;"> int wheel=4;//属性: 4个轮
    void run(){//功能: 跑
            System.out.println("我是出租车我也会跑");
    }</span></span></span>

我们如何来访问对象中的它自己的属性和方法呢?

格式:对象.属性; 对象.方法名();  

这一点也验证了面向对象编程的侧重点在于“对象”上;  

<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;">texi.wheel;            texi.run()</span></span></span>

封装:

从字面可以解读为将东西封起来再装好。要想拿到里面的东西就得有相应的方法打开,才能拿到。举例来说:一个房间的门如果没有上锁,那么大家都可以进去拿东西,但现在我们不想让谁都进来拿东西,我们可以将房门上锁,只对外提供一把钥匙,只有有钥匙的人才能进来,这就是“封装”现象!在java程序中,“封装”现象如何实现呢?可以这样实现:将类中的一些属性和方法用private关键字修饰,将他们“私有化(即不对外直接公开)”,使外部其他类不能通过创建该类对象或通过类名直接访问这些属性和方法;只对外提供公有的方法,外部其他类必须通过该类对外提供的公有方法来访问该类的相应成员;

例如:

<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;">class Person{
   private String name;//将name属性私有化(封装)[相当于了上锁]使外部其他类不能直接访问到
    public SetName(String name){//对外提供公有方法(相当于房门钥匙)供外部其他类访问到本类属性
        this.name=name;
    }
}
</span></span></span>

继承:

从字面来说继承就是子父类关系的简称 ,就是儿子(女儿也行,好吧)会继承老爸的一些属性和行为在java中如何描述继承关系呢? 注意: 第一得知道在java中继承是类与类之间或者是接口与接口之间才有继承关系;通过extends关键字来描述继承关系例如:老爸这个类

<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;">class Dad{
    String sex=man;
    void smoke(){
        System.out.println("老子会抽烟!");    
    }
}</span></span></span>

那么我们怎么来让儿子这个类继承老爸这个类呢?

<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;">class Son extends Dad{//通过extends关键字儿子这个类就继承老爸这个类了
    String name;//定义自己的属性
    String sex=man;//继承过来的属性,无须再定义,这里写出来是为了好理解
    void smoke(){//继承过来的方法,无须再定义,这里写出来是为了好理解
        System.out.println("老子会抽烟!");    
    }
    void playBall(){//定义自己的方法
        System.out.println("儿子即会打球又会抽烟!");    
    }
    void somke(){//重写的方法
        System.out.println("我不抽20块以下的烟");
    }
    void smoke(int n){//重载的方法
    System.out.println("我抽了+n+"年的烟了");
    }
}</span></span></span>
那么具有继承关系的两个类有什么特点呢?

子类会将父类的属性和方法继承过来,当然子类也可以自己定义的属性和方法2)当子类自己定义的方法和父类继承过来的方法相同时会发生“重写“现象!3)父类用private关键字私有的方法是不能被继承的!4)子类可以使用super访问父类的属性和方法5)子类通过重写父类方法,修改父类的功能6)子类构造器一定调用父类的无参构造器7)构造器不能继承

多态:

字面意思就是多种形态,也就是说一种事物同时局部多种形态.注意:要出现多态情况,那么类和类之间一定得是继承关系,或者类和接口是实现关系我觉得:在java中多态是相对于一个对象而言的,就是父类型引用变量引用子类对象,并且父类型引用变量可以接受不同子类的对象

例如:拿上面的举例 Dad uncle=new Son();父类引用变量uncle即具备Son类的成员又具备父类的成员;这也称为“向上造型”;多态时的特点1)多态时访问成员变量,如uncle.name;编译时看等号左边,父类有该成员变量则编译通过,否则编译出错!运行时也看等号左边,有则运行结果2)多态时访问方法,如uncle.smoke()编译时看等号左边,父类有该成员方法则编译通过,否则编译出错!运行时看等号右边,父类有该方法,子类没有该方法执行父类方法;父类有该方法,子类也有该方法执行子类方法3)多态时访问静态方法编译运行都看等号左边

抽象

一般我们把不能具体描述的东西约定俗成为“抽象”的东西 。例如:我们说一个人长得很“抽象”,n你想你能具体形容描述出来么?在JAVA中如何描述抽象这个概念呢?我觉得在java中抽象类是由抽象方法而衍生出来的,为什么呢? 因为Java规定一个类中定义了抽象方法那这个类就跟着必须定义为抽象类,而不是因为先定义抽象类再跟着规定抽象类中的方法必须是抽象的,可能最后理解的结果是一样的但性质是不一样的(个人理解)简单说:就是有抽象方法的类一定是抽象类,但是抽象类中不一定都是抽象方法,也可以有具体方法。首先就是当我要在一个类定义一个方法时,暂时我不知道该方法具体功能是什么;等我想好了我在用他实现一个功能时我再具体描述他功能,这样我们就可以将这个方法用abstract关键字修饰定义为抽象方法(还有一点也就是什么时候定义抽象类的?也可以说抽象类是向上抽取而来的,就是几个类据有共同的属性和方法,不想每个类都定义一次,那么定义一个公有类(即抽象类)其他类只要继承抽象类再重写方法就行!)例如:我有一百块钱,现在我不知道怎么用,等我想好了在具体怎么用
<span style="font-family:SimSun;font-size:14px;"><span style="font-family:SimHei;"><span style="font-family:SimHei;">abstract class Money{//因为有了抽象方法所以必须定义为抽象类
    public abstract void buySomthing();//现在不知道怎么用,那就把它的功能代码体去掉
}
//现在我饿了,想买东西吃了,我就知道怎么用了
class Hungry extends Money{
    void buySomething(){
        System.out.println("我饿了,现在我要买东西吃!")
    }
}</span></span></span>

抽象类的特点

  • 抽象类不能实例化
  • 抽象类可以继承抽象类
  • 继承抽象类必须得重写抽象方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值