OOP学习小结

 

在蓝杰学了java这么久了,今天是第一次写总结,从OOP(面向对象的部分)开始:


OOP主要有两部分:
类和对象
类的继承
一.类和对象
1.类 
类是一种用户自定义的类型,类似于基本数据类型。
类是一组具有相同特征和相同行为的对象的抽象。对象的特征定义为类的属性,对象的行为定义为类的方法(函数)。
类可以创建对象,也可以说类是对象的模板,只有创建了对象才能调用类里面的方法。
类是程序的基本组成单位。
类可以创建对象的对象。

2.对象
万事万物皆对象。
对象,我们眼睛里看到的和脑子里想到的物体都可以称之为对象。
对象有两部分组成:
特征和行为。
例如:
学生是一个对象
特征:姓名  年龄  学号等
行为:学习  玩       走路   吃饭等

3.类的格式
public class 类名{
           private 数据类型  属性名; //属性是是属于当前对象的只能由当前对象调用,所以使用private私有的访问修饰符。

           public 类名([参数列表]){ //构造函数
           //方法体
           }

          public 返回值类型  方法名([参数列表]){ //方法:方法一般要和其他的对象进行交互,定义为public公有的访问修饰符
         //方法体
          }


}

类的访问控制:
private:私有的,只有当前类能访问,其他类不能访问,子类也不能访问;
protected:受保护的,当前包里的类和子类都可以访问;
public:共有的,所有的类都可以访问。
如果没有显示定义,系统有一个默认的(缺省),但不同情况下默认的不同,

例如普通类中默认的是protected,接口中默认的是public。

4.方法的分类
(1).根据返回值划分 
         有返回值的方法和无返回值的方法
(2).根据参数划分
         有参数的方法和无参数的方法

         在编写程序时,这两种方法分类是结合在一起使用的,不会有独立的情况出现。


5.方法的重载
方法重载的条件:
在同一个类中,方法名相同,但是方法的参数个数和参数类型不同。
方法重载后的调用:
根据参数的个数和类型来决定调用相应的方法。
为什么要进行方法的重载:
由于对象的差异,导致相同的方法需要有不同的实现。

6.方法参数传递
分为两种:
基本数据类型的传递
对象的传递

7.构造函数
构造函数是用来实例化(创建)对象的。
每个程序都有一个默认的构造函数,
默认的格式为:不带形参,方法体为空    public 类名() {}
用户也可以自己定义构造函数,格式
public 类名([参数类型 参数名,,]) {
//函数体
}

如果自定义了构造函数,会屏蔽系统默认的构造函数,此时再调用就调用用户自定义的构造函数。
构造函数与普通方法的区别:
(1).构造函数不能有返回值 ,而普通函数有返回值
(2).构造函数的方法名必须与类名相同,而普通函数可以用户自己命名。
(3).系统会默认提供一个构造函数,普通方法必须自己写
(4).构造函数是用来实例化(创建)对象的,普通方法是对象调用来实现某一个功能的
(5).构造函数只有在创建对象时调用一次,而普通函数可以多次调用
(6).构造器可以调用构造函数也可以调用方法,而普通方法不能调用构造函数

利用构造函数创建对象的格式:
类名 对象名 = new 构造函数名([参数列表]);
对象调用构造函数的格式:
对象名.方法名([参数列表]);

在继承时子类并不继承父类的构造函数。
8.this关键字
(1).this关键字用来区分属性和参数,如:
public void setName(String name) {
this.name = name; //加上this的为属性,不加this的为参数
}
(2).this关键字用来指代当前对象,如:
Student stu1 = new Student();
Student stu2 = new Student();
stu1.setName(); //this指代stu1
stu2.setName(); //this指代stu2
(3).this关键字其实就是现实中的“我”

9.值传递与引用传递
值传递:适用于 java中的基本数据类型(包含String类型)
值传递是将变量A的值,拷贝一份存储到变量B中,两个不同的变量分别存储相同的值,
修改B的值不会影响到A的值。
赋值运算是安置传递。

引用传递:适用于 java中的类类型(不包含String类型)
引用传递是将对象A中的地址,拷贝一份存到对象名B中,这样两个对象名中存储的是同一地址,
调用方法或属性时访问的是同一对象。
引用传递交互是双方的,A的值会随着B值的改变而改变

二.类的继承

 

继承


1.为什么需要继承
增加程序的可重用性
增加程序的扩展性

2.继承的格式
继承是通过extends关键字实现的
格式是:
public class 子类名 extends 父类名{

}

3.子类继承到了父类的什么
java中的继承是单继承,只有一个父类
(1).子类父类在同一个包下:子类可以继承父类公有的和受保护的以及默认的属性和方法
(2).子类父类不在同一个包下:子类值可以继承父类公有的属性和方法
子类不能继承父类私有的属性、方法、构造函数
子类可以调用从父类中继承的属性和方法,
在调用方法时,如果子类没有该方法,则调用父类中继承来的方法

4.方法的重写
方法重写的条件:
(1).必须存在继承关系,子类中定义的方法必须在父类中存在,
(2).方法名、参数、返回值类型必须与父类的一样
(3).子类中定义的访问修饰符可以比父类访问修饰符,但绝对不能小
public -  protected - 默认的  - private
子类中可以重载父类的方法。

5.自动转型
要实现自动转型需要满足的条件:
必须存在继承关系(只有存在继承关系的才能自动转型,因为父类包含子类)
格式:
父类名 对象名 = new 子类构造函数([参数列表]);
对象名是父类类型的,但对象是通过子类的构造函数创建的,对象是子类的
对象会优先调用子类的方法,如果子类没有该方法,则调用父类中继承来的方法

6.多态
多态是一种表现的形式。
因为程序的死的,由于继承、方法重载、方法重写、自动转型导致程序在编译时不能确定调用哪个方法,
到运行时才能确定

接口

 
1.为什么需要接口
接口是用来定义规则、定义方法的
便于程序的修改、扩展
接口会强制子类去实现接口中的的所有方法
2.定义接口的格式
接口只有公有的属性的方法,但是方法没有具体的实现,所以在使用时很少定义属性,
一般定义常量。
接口的关键字是:interface
public interface 接口名 {
           //定义常量的格式: 
           public static final 数据类型  常量名(一般常量名全部大写)= 值;
           //定义方法的格式:
           public 返回值类型  方法名([参数列表]);
          //默认的是public
          返回值类型  方法名([参数列表]);
}
static表示静态的,不需要创建对象就可以直接使用
final表示不可改变,不能改变常量中的值,如果发生改变,则出错。

3.实现接口的格式
实现接口的关键字是:implements
public class 类名 implements 接口名{
//必须重写接口中的所有方法
}

接口也可以继承接口:
public interface 子接口名 implements 父接口名{

}

4.接口和类的区别
  接口定义的关键字是interface,类定义的关键字是class
  实现接口的关键字是implements,继承类的关键字是extends
  类可以实现多该接口,类只能继承一个类(java中的类是单继承的)
  接口中所有的方法都没有具体实现,类中所有的方法必须有实现
  接口中没有构造函数,类有构造函数
  接口不能创建对象,类可以创建对象

3.抽象类
抽象类介于接口和类之间,可以有实现,也可以没有实现。
定义抽象类的关键字是abstract class
格式:
public abstract class 类名 extends 父类 implements 父接口名,,{
           定义抽象的方法 
           public abstract 返回值类型 方法名([参数列表]);
}
抽象类不能创建对象(抽象类中存在抽象的方法)
集成抽象类的关键字是extends
抽象类不必实现接口中的所有方法

抽象类的实现
抽象类的实现格式:public class  子类名  extends 抽象父类名{


接口是一种特殊的类

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值