java面向对象

类和对象的区别

概念:类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体

局部变量和成员变量区别

区别一:定义的位置不同

定义在类中的变量是成员变量

定义在方法中或者{}语句里面的变量是局部变量

区别二:在内存中的位置不同

成员变量存储在堆内存的对象中

局部变量存储在栈内存的方法中

区别三:生命周期不同

成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失

区别四:初始化不同

成员变量因为在堆内存中,所有默认的初始化值

局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

 

面向对象的三个特征:

 

封装,继承,多态。

 

封装:

l   封装的好处:

n   1、提高了代码的复用性。

n   2、隐藏了实现细节,对外提供可以访问的方式。便于调用者的使用。

n   3、提高了安全性。

 

private 私有: 不允许修改

 

this哪个对象调用了this所在的方法,this就代表哪个对象。

 

继承:

类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。

 

extends  继承

格式:class 子类 extends 父类 {}

特点:

当出现同名成员变量时,如果子类有,则继承子类,如果子类没有,则继承父类的

 

super  代表父类对象

在子类中若要访问父类中的成员变量,必须使用关键字super来完成。super用来表示当前对象中包含的父类对象空间的引用。

格式:super.父类中的成员变量

所有类的隐形父类叫Object

 

方法重写:

子类方法覆盖父类方法,必须保证权限大于父类权限。

写法:返回类型 方法名 参数列表必须一样

 

抽象类:

abstract

抽象方法定义的格式:

public abstract 返回值类型 方法名(参数);

抽象类定义的格式:

abstract class 类名 {

}

 

1抽象类一定是个父类

2抽象类中可以不定义抽象方法

3抽象关键字abstract不可以和private/私有  共存

 

接口:

概念:接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。

 

接口的定义:

使用interface代替了原来的class,其他步骤与定义类相同:

l   接口中的方法均为公共访问的抽象方法

l   接口中无法定义普通的成员变量

 

接口中所有成员变量修饰符 public static final

static 静态:只要被static修饰的成员 在外界可以直接通过 类名.成员 调用

被final 修饰的变量叫常量,不能改变

 

在接口中 所有方法的修饰符都是 public abstract

 

类实现接口:implements

 

格式:

class 类 implements 接口 {

    重写接口中方法

}

 

 

多态:

父类引用对象指向子类对象

    父类类型  变量名 =new 子类类型();

   

父类引用指向子类对象成员变量特点:编译运行都看左边

    编译看父类,如果父类有,则运行时访问父类的成员变量

    如果父类没有 编译失败

 

    成员方法特点 :编译看左边 运行看右边

    编译看父类,如果父类有,则编译成功,运行时子类重写后的方法;

    如果父类没有,则编译失败

 

    Pe pe=new St();//向上转型

    System.out.println(pe.a);

   

向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用

    向下转型后  就可以调用子类独有的方法

      

    instanceof 判断

  pe instanceof Pe

posted @ 2019-03-07 10:37  fdbnf  阅读(152)  评论(0编辑  收藏  举报