面向对象

面向对象

面向对象:以结果为中心,不需要每件事情都要自己完成,核心:找到正确的对象。

对象:每一个对象都要2个属性,实实在在存在的个体,有属性和方法构成,是类中具体的一个实例对象。

类:是抽象的,抽象的概念,指的是一个群体,具有相同属性和行为的对象的抽取。

静态属性:描述有一个对象的固定属性(属性);

动态属性:描述这个对象能干什么(方法);

Class-类

先声明一个类(属性,方法)

通过类来创建对象

类名 对象名 = new 类名;

Eg:Student s = new Student;

使用对象来调用属性和方法

明确:只有对象才能调用方法

方法:是一种功能的体现

方法可以直接调用当前类的属性

方法五要素:

访问修饰符(目前暂用public) 方法返回值 方法名(){
方法体

}

方法返回值:不需要结果返回时使用void 需要结果时更具返回值的数据类型确定。注意:return 和 void 无法同时纯在,有void 就不能出现 return,出现return就不能使用void

参数列表:使用这个方法需不需要条件,需要条件就在()中声明,方式和属性声明一样。

此时参数在方法中是一个占位符,在方法中可以直接使用是为形式参数。

调用对象中的属性和方法:

s.name = “小明”;// 调用属性

s.js(); //调用方法

特点:

1、构造方法与类同名,不含返回值类型。如果类中没有构造方法,系统默认有一个构造方法。

2、无参构造方法在给属性赋值时比较麻烦,可以定义有参构造方法。

eg:public Student(String name , int age, int score){

        this.name = name;

        this.age = age;

        this.score = score;

}

3、构造方法用于程序的初始化。

4、当类有了有参构造方法时,需要无参构造方法就需要自己去构建。

5、构造方法只能用于创建对象时,不能在程序中调用其他方法一样调用构造方法。但可以在同一个类中的其他构造方法中用this();的形式调用他。但是this();必须位于该方法的第一行。

6、构造方法一般用public才能被系统调用。

区别:

1、构造方法的修饰符一般是 public,一般方法的修饰符根据需要决定

2、构造方法没有返回值的数据类型,一般方法有数据的返回值类型。

3、构造方法与类同名,一般方法遵循标识符命名规则。

4、构造方法的方法体一般用来初始化对象,一般方法是功能的实现。

5、调用方法不一致,一般方法用对象来调用,构造方法用new,this,super来调用。

方法的重载:

判断标准:同名不同参。(参数的数量,顺序,类型不同)。

eg:public studens(int a,int b){}

        public students(int a,int b,int c){}

成员变量与局部变量的区别:

1、定义位置不同(一个定义在类里面,一个定义在方法里面)

2、作用域不同(一个作用与整个类,一个只能作用于定义的方法里面)

3、优先级不同(就近原则)

4、初始值不同(成员变量有初始值,局部变量没有初始值必须初始化之后才能使用)

5、生命周期不同(一个随着对象的创建而创建,一个随着方法的调用而创建)

1、(特性)将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类的提供的方法来实现对隐藏信息的访问和修改。

2、

封装原则:将属性隐藏起来——使用private关键字来修饰属性(私有化,私有的,被这个private修饰的内容,只能在本类中使用)

 对外提供公共的访问方法(赋值,取值),提供getter,setter,方法来操作隐藏属性

3、实现封装的步骤

用private等修饰符来实现私有化属性;

创建公共的方法来赋值和取值,setter和getter方法;

在setter方法中添加控制语句。

4、封装的好处

隐藏了实现的细节,提高安全性

符合java的”高内聚,第耦合“思想;

提高了软件的独立性和可重用性

一、包的介绍

作用:

1、文档分门别类,易于查找和管理;

2、解决文件同名冲突问题

3、有助于实施访问权限管理

包:package ,需要放在java源代码中的第一条语句;以分号结尾。类似于windows中的文件夹。

包的命名规则:

1、包名由字母大小写组成,不能以圆点开头结尾;

2、包名之前最好加上唯一前缀,通常是组织倒置的域名;

包的创建方式:

1、分别创建包合类

2、创建类的同时创建包

包的导入:

如果需要使用其他包下面的类,可以使用import关键字来导入

导入规则:import 包名 类名

注意:

1、一个类同时引用了两个来自不同包的同名类,必须通过完整类名来区分;

package和import的顺序是固定的

package必须位于第一行

只允许由一个package语句;

其次是import;

接着是类的声明;

二、访问权限控制

public:所修饰的类、变量、方法在任何地方均具有访问权限;

protected:这种权限是为继承而设计的,protected 所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外包的非子类是不可以访问;

默认:只对同包的类具有访问权限,外包的类都不能访问;

private:私有的权限,只对类的方法可以使用;其他地方均不能访问使用

三、static 静态修饰符


 抽象方法的介绍

当父类的某些方法不确定时,或者每一个子类都有不同的表现形式的时候,可以用abstract关键字来修饰该方法

被abstract修饰,没有方法体的方法,就叫抽象方法,

特点:

  1. 抽象方法没有方法体,只有方法的声明
  2. 如果一个类中存在抽象方法,那么这个类必须要声明为抽象类

如果父类中有一个方法,每一个子类都有不同的实现,此时可以将这个方法声明为抽象方法,抽象方法是没有方法体的,只是一种规范。

Pet类中的toHospital() 方法不需要具体的实现,而且实现后没有任何意义,此时可以将Pet类中的toHospital()声明为抽象方法;

什么是抽象方法:被abstract修饰的方法,就是抽象方法。

  1. 抽象类为什么不能实例化, - 抽象类中可能会有抽象方法,抽象方法是个不完整的方法,有缺陷,没有方法体的方法,如果能实例化,调用抽象方法,
  2. 抽象类中是否可以存在构造方法? 存在的,任何一个构造方法,第一行都一个super(),  留给子类使用的
  3. 抽象类和抽象方法的关系? 抽象方法必须存在与抽象类中,抽象类不一定有抽象方法。
  4. 什么是抽象类? - 被abstract修饰的类就是一个抽象类,特点:不能实例化
  5. 抽象类能不能继承普通类? - 可以的,如果一个类没有显示的去继承一个父类,默认的父类是object
  6. 普通类能不能继承抽象类?   -  可以的,注意:子类必须要重写父类中的所有的抽象方法,如果没有全部重写,那么子类必须要声明为一个抽象类
  7. 抽象方法和普通方法的的区别!语法,方法体,所在的类
    1. 抽象类和普通类的区别?语法,内容(是否有抽象方法),实例化,被继承时
  8. 是否存在抽象的构造方法? - 不存在, 所有的构造方法必须有代码,抽象的方法不能有方法体,没有办法写代码,矛盾!!
  9. 是否存在抽象的静态方法? - 不存在,静态方法其实就是一个普通的方法,需要一个方法体。
  10. 抽象类中是否存在静态方法? - 静态方法是独立于对象的,需要实例化,抽象类中是可以存在的,也可以被调用
  11. 关于继承,跟是否抽象无关,都可以互相去继承

语法:方法体,调用

特征:

1:抽象方法没有方法体,只有方法的声明;

2:如果一个类中存在抽象方法,那么这个类必须声明为抽象类;abstact修饰的类,抽象类不能创建对象

3:抽象类不能被实例化;

4:抽象方法必须在子类中被重写,除非子类也是抽象类;

、抽象类和抽象方法的关系  

1:有抽象方法的类,一定是抽象类,但抽象类不一定有抽象方法;

2:一个类继承抽象类,必须重写抽象类中的所有抽象方法,如果没有全部重写,那么子类必须声明为抽象类

3:没有抽象构造方法,也没有抽象静态方法

4:抽象类中可以有构造方法,创建子类的实例时调用

  1. 抽象类和普通类的区别 - 记住4条以上  

1、语法不同,抽象类是被abstract修饰的类,普通类一定不能被abstract修饰;

2、抽象类中可以有抽象方法,普通类一定不能有抽象方法;

3、抽象类不能被实例化普通类可以去实例化调用;- 创建对象

4、抽象类被继承时,子类必须重写全部的抽象方法,或者将子类声明为抽象类;普通类继承普通类的时候,没有任何限制;

2:接口

1:什么是接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合(接口中的所有的方法都是抽象方法),接口通常以interface来声明

接口是一个特殊的类,这个类中只能存值抽象方法,为了和普通的类去做区分,同时弥补java单继承的缺陷,把这个特殊的类接口,使用interface声明接口

一个类通过实现接口的方式,从而来实现接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

1、接口不能用于实例化对象。

2、接口没有构造方法。

3、接口中所有的方法必须是抽象方法。默认为:public abstract

4、接口不能包含成员变量,除了 public static final 量。

5、接口不是被类继承了,而是要被类实现。实现使用关键字:implements 

6、接口支持多实现

7、一个类可以继承一个类的同时实现多个接口。

3:使用接口

使用接口的步骤:

  1. 创建接口,声明方法
  2. 创建类,实现接口,实现接口中的方法
  3. 使用实现后的方法执行具体的操作

4:接口与抽象类的区别  

  1. 抽象类使用关键字abstract class修饰,接口使用关键字interface;
  2. 抽象类使用关键字extends实现继承,接口使用implements来实现
  3. 抽象类中可以包含抽象方法和普通方法,接口中只能有抽象方法(1.7);
  4. 抽象类可以有构造方法,接口中不能有构造方法;

5、抽象类可以有成员变量,接口中只能有常量;

6、抽象类只能单继承,接口可以多继承;

7、抽象类里面的方法可以是public,protect,private,接口的方法只能是public;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值