黑马程序员-Java基础-面向对象

1.面向对象

面向对象有三个要素,封装、继承、多态。

(1)类与对象,类把一些具有相同属性封装成一个类,对象是类的实例,类的具体实现形式。

(2)抽象类与接口,抽象类,只有抽象方法,没有具体的实现细节,需要继承去实现具体细节。接口是比抽象类更抽象,只有公共的方法,没有具体的实现细节。

(3)多态、重载、覆写,多态是类有不同的方法,比如,人有各种各样的人,重载,是方法名相同,参数不同,根据参数来选择方法,覆写是子类覆写父类的方法,改进方法。

2定义类的格式、实例变量与局部变量

class Student{

              代码

          } 

注意类名中单词的首字母大写。

实例变量:定义在类中但在任何方法之外。

局部变量:定义在方法之中的变量。

局部变量要先赋值,再进行运算,而实例变量均已经赋初值。这是局部变量和实例变量的一大区别。

实例变量的对象赋值为null。

局部变量不允许范围内定义两个同名变量。实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。

实例变量和局部变量允许命名冲突。

书写方法的格式:

修饰符 返回值 方法名 调用过程中 方法体可能出现的例外

publicint/void addNumber(参数) throwExcepion {}

例:

public intaddNumber(int a,int b){

}

注:方法名中的参数int a,int b为局部变量

3.构造方法

类方法中的一类特殊方法:构造方法。构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。

注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。

构造方法没有返回值。格式为:public 方法名。

构造方法的方法名与类名相同。构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。

在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。

用类来生成对象的语句:

Student s=newStudent()。

第一个Student表示这是用Student类进行定义。“Student()”表示调用一个无参数的构造方法。

如果()中有参数,则系统构造对象的过程中调用有参的方法。此时S称为一个对象变量。

Student s的存储区域存放的是地址:一个对象在硬盘上占有一个连续地址,首地址赋予s空间。

S称为对象Student的引用。

注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。

可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:

publicstudent(string name,int a){

}

publicstudent(int a,string name){


3.重载与覆写

(1)重载

Overloading在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,返回值也可能相同。

构造方法也可以实现overloading。例:

public voidteach(){};

public void teach(inta){};

(2)覆写

子类覆写了父类的方法

4.继承

父类(SuperClass)和子类(SonClass)。

父类的非私有化属性和方法可以默认继承到子类。

Class Sonextends Father{

}

而如果父类中的私有方法被子类调用的话,则编译报错。

父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以)

如果子类访问父类的构造方法,则在编译的时候提示访问不到该方法。

JAVA中不允许多继承,一个类有且只有一个父类(单继承)。

5.InstanceOf

Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。

6.修饰符

(1)static

static:①可修饰变量(属性);②可修饰方法;③可修饰代码块。

Static intdata语句说明data为类变量,为一个类的共享变量,属于整个类。Int data为实例变量。

静态方法不需要有对象,可以使用类名调用。

静态方法中不允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是不可用的。

一般情况下,主方法是静态方法,所以可调用静态方法,主方法为静态方法
(2)final

final可以修饰类、属性、方法。

当用final修饰类的时候,此类不可被继承,即final类没有子类。这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生。

当利用final修饰一个属性(变量)的时候,此时的属性成为常量。

(3)abstract

Abstract(抽象)可以修饰类、方法

如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。

Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。

Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。

Final和abstract永远不会同时出现。

当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。

注意比较:

private void print(){};此语句表示方法的空实现。

Abstract void print(); 此语句表示方法的抽象,无实现。
7.接口

接口与类属于同一层次,实际上,接口是一种特殊的抽象类。

如:

interface IA{

}

publicinterface:公开接口

与类相似,一个文件只能有一个public接口,且与文件名相同。

在一个文件中不可同时定义一个public接口和一个public类。

一个接口中,所有方法为公开、抽象方法;所有的属性都是公开、静态、常量。

一个类实现一个接口的格式:

class IAImpleimplements IA{

}; 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值