黑马程序员——面向对象

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

一面向对象概念

1 理解面向对象
 (1) 面向对象是相对面向过程而言。
 (2)面向对象和面对过程都是一种思想。
 (3)面向过程强调的功能行为。
 (4)面向对象将功能封闭成对象,具备了功能的对象。
 (5)面向对象是基于面向过程的。
 (6)面向对象的三个特征:封装,继承,多态。
 
2面向对象要点
(1)相对于过程,面向对象使问题更加简单化。
(2)对象不只是指人,万物皆可为对象。
(3)面向对象使执行者变为指挥者。
(4)开发时,先找对象,再找功能,找到了直接用。
(5)没有对象时,创建对象再用。

3.main函数
public static void main(String[] args)

 public :代表着该函数的访问权限是最大的。
 static :主函数是静态的,代表主函数随着类的加载就已经存在。
 void  :主函数的返回值没null 没有具体返回值。
  main:不是关键字,但是一个特殊的词,可以被jvm所识别。
 (String[] args) 函数的参数,参数类型是一个数组,该数组中的元素是字符串,JVM在调用主函数时,传入的是new String[0];

 5 匿名对象  

 (1)匿名对象是对象的简化形式。
  (2)匿名对象调用属性没意义,调用方法有意义,因为方法里有内容。
  (3)匿名对象两种使用情况:
  <1>当对对象方法仅进行一次调用时。如:new Car().run();
  <2>作为实际参数进行传递时。
  (4)代码演示:

   public static void main(String[] args)
  {
       show(new Person());
  }
  public static void eat(Person c)
  {
       System.out.println(c);
  } 

二 封装 


  1封装概述 
 (1): 指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
  (2)好处:
  将变化隔离
  便于使用
  提高重用性 
  提高安全性
  (3)封装原则 :
  将不需要的对外提供的内容都隐藏起来。
  把属性都隐藏,提供公共方法对其访问。
 (4) 函数,类,包 和框架 都是封闭体。

 2 封装private

(1) private关键字

private是一个权限修饰符。用于修饰成员(成员变量和成员函数,内部类)  被私有化的成员只有在本类中有效。

(2)要点说明:

<1>将成员变量私有化, 对外提供对应的set,get方法对其进行访问,提高对数据访问安全性。

<2>将属性私有化以后,类以外即使建立了对象也不能直接访问。

<3>私有仅仅是封装的一种表现形式,权限在访问不到的范围内都是封装。

<4>在访问方式中可加入逻辑判断语句,提高代码健壮性。


三 构造函数 


1 特点:

 (1) 函数名与类名相同

(2)不用定义返回值类型

(3)不可以写return语句

2 作用:给对象进行初始化

3 注意: 

(1)对象一建立就会调用 与之相对应的构造函数。若访问不到相应的构造函数,则对象不能建立。

(2)当一个类中没有定义构造函数时, 系统会默认给该类加入一个空参数的构造函数。

(3)在类中自定义了构造函数后,默认的构造函数就没有了。

(4)多个构造函数是以重载的形式存在的。

4.构造函数与一般函数的区别:

(1)构造函数是在对象一建立就运行,而一般方法是对象调用才运行。

 (2) 一个对象建立,构造函数只运行一次,而一般方法可多次被调用。

5 何时定义构造函数?

 (1) 当分析事物时, 该事物具备一些特性或行为,那么将这些内容定义在构造函数中。

6.构造代码块。

(1)作用:给对象进行初始化。对象一建立就运行,并且优先于构造函数执行。

(2)和构造函数的区别:

构造代码块是给所有对象进行统一初始化

构造函数是给所对应的对象进行初始化。

(3) 构造代码块中定义的是不同对象共性的初始化内容。

四 .继承 

1.概述  

 (1)例如 学生 和工人两个类   将这两个类中的共性内容抽取出来  定义成一个类 让学生和工人与单独
描述的这个类有关 抽取共性内容,建立父类。继承使用extends关键字.
 (2)作用

提高了代码的复用性。
让类与类之间产生了关系,有了这个关系,才有了多态的特性。

(3)代码:

class Person
{
    private String name;
    private  int age;
    Person(String name,int age)
    {
                 this.name = name;
                this.age = age;
   }
}
class Student extends Person
{            
         Student(String name,int age)
         { 
                   super(name,age);      
        } 
        void study()
         {
                System.out.println("study");
         }
}

五.多态

1.多态的概念
(1) 多态:可以理解为事物存在的多种体现形态。
(2)多态的体现:
父类的引用指向了自己的子类对象。

方法的重载。

方法的覆盖。

(3)多态的前提:
<1>必须是类与类之间有关系,要么继承,要么实现。
<2>通常还有一个前提:存在覆盖。

六.Object类

1.Object类
(1)Object:是所有对象的直接或者间接父类,是一个超类,该类中定义的肯定是所有对象都具备的功能。
(2)Object类中已经提供了对对象是否相同的比较方法,如果自定义类中也有比较相同的功能,没必要
重新定义,只要沿袭父类中的功能,建立自己特有的比较内容即可,这就是覆盖。
(3)java认为所有对象都具备比较性,该方法equals定义在Object中。
2.Object中方法:
(1)toString():返回该对象的字符串表示,所有对象都可以变成字符串打印。
(2)hashCode():返回该对象的哈希码值。
(3)getClass():返回此Object的运行时类。

(4)wait();

(5)notify();

(6)notifyAll();

七.final关键字

final:意为“最终”,是一个修饰符。
(1)可以修饰类,函数,变量。
(2)被final修饰的类,不可以被继承。
(3)被final修饰的方法不可以被复写。如:final void show(){}//最终方法
(4)被final修饰的变量是一个常量。如:final int x=3;
(5)内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。


---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值