面向对象
面向对象:以结果为中心,不需要每件事情都要自己完成,核心:找到正确的对象。
对象:每一个对象都要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修饰,没有方法体的方法,就叫抽象方法,
特点:
- 抽象方法没有方法体,只有方法的声明
- 如果一个类中存在抽象方法,那么这个类必须要声明为抽象类
如果父类中有一个方法,每一个子类都有不同的实现,此时可以将这个方法声明为抽象方法,抽象方法是没有方法体的,只是一种规范。
Pet类中的toHospital() 方法不需要具体的实现,而且实现后没有任何意义,此时可以将Pet类中的toHospital()声明为抽象方法;
什么是抽象方法:被abstract修饰的方法,就是抽象方法。
- 抽象类为什么不能实例化, - 抽象类中可能会有抽象方法,抽象方法是个不完整的方法,有缺陷,没有方法体的方法,如果能实例化,调用抽象方法,
- 抽象类中是否可以存在构造方法? 存在的,任何一个构造方法,第一行都一个super(), 留给子类使用的
- 抽象类和抽象方法的关系? 抽象方法必须存在与抽象类中,抽象类不一定有抽象方法。
- 什么是抽象类? - 被abstract修饰的类就是一个抽象类,特点:不能实例化
- 抽象类能不能继承普通类? - 可以的,如果一个类没有显示的去继承一个父类,默认的父类是object
- 普通类能不能继承抽象类? - 可以的,注意:子类必须要重写父类中的所有的抽象方法,如果没有全部重写,那么子类必须要声明为一个抽象类
- 抽象方法和普通方法的的区别!语法,方法体,所在的类
- 抽象类和普通类的区别?语法,内容(是否有抽象方法),实例化,被继承时
- 是否存在抽象的构造方法? - 不存在, 所有的构造方法必须有代码,抽象的方法不能有方法体,没有办法写代码,矛盾!!
- 是否存在抽象的静态方法? - 不存在,静态方法其实就是一个普通的方法,需要一个方法体。
- 抽象类中是否存在静态方法? - 静态方法是独立于对象的,需要实例化,抽象类中是可以存在的,也可以被调用
- 关于继承,跟是否抽象无关,都可以互相去继承
语法:方法体,调用
特征:
1:抽象方法没有方法体,只有方法的声明;
2:如果一个类中存在抽象方法,那么这个类必须声明为抽象类;abstact修饰的类,抽象类不能创建对象
3:抽象类不能被实例化;
4:抽象方法必须在子类中被重写,除非子类也是抽象类;
、抽象类和抽象方法的关系
1:有抽象方法的类,一定是抽象类,但抽象类不一定有抽象方法;
2:一个类继承抽象类,必须重写抽象类中的所有抽象方法,如果没有全部重写,那么子类必须声明为抽象类
3:没有抽象构造方法,也没有抽象静态方法
4:抽象类中可以有构造方法,创建子类的实例时调用
- 抽象类和普通类的区别 - 记住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:使用接口
使用接口的步骤:
- 创建接口,声明方法
- 创建类,实现接口,实现接口中的方法
- 使用实现后的方法执行具体的操作
4:接口与抽象类的区别
- 抽象类使用关键字abstract class修饰,接口使用关键字interface;
- 抽象类使用关键字extends实现继承,接口使用implements来实现
- 抽象类中可以包含抽象方法和普通方法,接口中只能有抽象方法(1.7);
- 抽象类可以有构造方法,接口中不能有构造方法;
5、抽象类可以有成员变量,接口中只能有常量;
6、抽象类只能单继承,接口可以多继承;
7、抽象类里面的方法可以是public,protect,private,接口的方法只能是public;