Javase--面向对象

面向对象

三大特征:封装,继承,多态

面向对象的开发方式?
面向对象就是将现实世界分割成不同的单元,然后每一个单元都实现成对象,然后给一个环境驱动一下,让各个对象之间协作起来形成一个系统。
面向对象术语
OOA   面向对象分析
OOD   面向对象设计
OOP   面向对象编程
实现一个软件的过程:分析(A) --> 设计(D) --> 编程(P)
类和对象
  1. 什么是类

     类实际上在现实世界当中是不存在的,是一个抽象的概念。是一个模板。是我们人类大脑进行“思考、总结、抽象”的一个结果。(主要是因为人类的大脑不一般才有了类的概念。)
    
     类本质上是现实世界当中某些事物具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”,“类”就是一个模板。
    
  2. 什么是对象

     对象是实际存在的个体。(真实存在的个体)
    

    在java语言中,要想得到“对象”,必须先定义“类”,“对象”是通过“类”这个模板创造出来的。
    类就是一个模板:类中描述的是所有对象的“共同特征信息”
    对象就是通过类创建出的个体。

    重点

     类:不存在的,人类大脑思考总结一个模板(这个模板当中描述了共同特征。)
     对象:实际存在的个体。
     实例:对象还有另一个名字叫做实例。
     实例化:通过类这个模板创建对象的过程,叫做:实例化。
     抽象:多个对象具有共同特征,进行思考总结抽取共同特征的过程。
     类 --【实例化】--> 对象(实例)
     对象 --【抽象】--> 类
     类 = 属性 + 方法
     属性来源于:状态
     方法来源于:动作
    
  3. 类的定义

    //语法格式
    [修饰符列表] class 类名 {
    			//类体 = 属性 + 方法
    			// 属性在代码上以“变量”的形式存在(描述状态)
    			// 方法描述动作/行为
    		}
    
  4. 对象的创建

     类名 变量名 = new 类名();
    
  5. 什么是实例变量?

     对象又被称为实例。
     实例变量实际上就是:对象级别的变量。
    
  6. 对象和引用的区别?

     对象是通过new出来的,在堆内存中储存.
     引用是:但凡是变量,并且该变量中保存了内存地址指向了堆内存当中的对象的
    
构造方法
  1. 当一个类中没有提供任何构造方法,系统默认提供一个无参数的构造方法.这个无参数的构造方法叫做缺省构造器

  2. 当一个类中手动的提供了构造方法,那么系统将不再默认提供无参数构造方法,

  3. 无参数构造方法和有参数的苟傲方法都可以调用

     Student x = new Student();
     Student y = new Student(123);
    
  4. 构造方法支持方法重载吗?

     构造方法是支持方法重载的.
     在一个类中构造方法可以有多个
     并且所有的构造方法名字都是一样的
     方法重载特点:
     在同一个类中,方法名相同,参数列表不同
    

封装

  1. 封装的作用

     保证内部结构的安全
     屏蔽复杂,暴露简单
    
  2. 如何封装

     1. 属性私有化(使用private关键字进行修饰)
     2. 对外提供简单的操作入口(set,get方法) 通过set方法修改,通过get方法读取
    

    set和get方法写的时候有严格的规范要求:
    set方法:
    public void set+属性名首字母大写(1个参数){
    xxx = 1个参数;
    }
    get方法:
    public 返回值类型 get+属性名首字母大写(无参){
    return xxx;
    }

继承extends

  1. 什么是继承?

     单继承是指一个子类最多只能有一个父类。
     多继承是一个子类可以有二个以上的父类。
     由于多继承会带来二义性,Java语言中的类只支持单继承,而接口支持多继承。
     Java中多继承的功能是通过接口(interface)来间接实现的
     JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以实现多个接口,从而克服单继承的缺点。
    
  2. 继承的作用

     基本作用:子类继承父类,代码可以得到复用
     主要作用:因为有了继承关系,才有了后期的方法覆盖和多态机制
    
  3. 继承的相关特性

     ①B类继承A类,则A类称为超类(superclass),父类,基类, B类则称为子类(subclass),派生类,扩展类
     ②java中的继承只支持单继承,不支持多继承
     ③java中不支持多继承,但有的时候会产生间接继承的效果
     ④java中规定,子类继承父类,除构造方法不能继承之外,剩下都可以继承.但是私有属性无法直接在子类中访问,(父类中private修饰的不能再子类中直接访问.可以通过间接的手段来访问)
     ⑤java中的类没有显示继承任何类,则默认继承Object类,Object类是java语言提供的根类
    
  4. 方法覆盖
    4.1. 什么时候考虑方法覆盖

     父类中的方法无法满足子类的业务需求,子类有必要对继承过来的方法进行覆盖
    

    4.2. 什么条件满足的时候构成方法覆盖

     ①有继承关系的两个类
     ②具有相同的方法名,返回值类型,形式参数列表
     ③访问权限不能更低
     ④抛出异常不能更多
    

    4.3.关于Object类中toString()方法的覆盖?

     toString()方法存在的作用就是:将java对象转换成字符串形式。
     大多数的java类toString()方法都是需要覆盖的。因为Object类中提供的toString()
     方法输出的是一个java对象的内存地址。
    
  5. 方法重载和方法覆盖有什么区别?

     方法重载发生在同一个类当中
     方法覆盖是发生在具有继承关系的父子类之间
     方法重载是一个类中,方法名相同,参数列表不同
     方法覆盖是具有继承关系的父子类,并且重写之后的方法必须和之前的方法名一致
    

多态

  1. 向上转型和向下转型的概念。

     向上转型:子--->父 (upcasting)
     	又被称为自动类型转换:Animal a = new Cat();
    
     向下转型:父--->子 (downcasting)
     	又被称为强制类型转换:Cat c = (Cat)a; 需要添加强制类型转换符。
    
  2. 多态的概念

     多种形态,多种状态,编译和运行有两个不同的状态。
     编译期叫做静态绑定。
     运行期叫做动态绑定。
    
  3. 什么时候必须进行向下转型?

     调用子类对象上特有的方法时
    
  4. 多态的作用

     降低程序的耦合度,提高程序的扩展力。
     ```
     public class Master{
     	public void feed(Dog d){}
     	public void feed(Cat c){}
     }
     ```
     以上的代码中表示:Master和Dog以及Cat的关系很紧密(耦合度高)。导致扩展力很差。
     ```
     public class Master{
     	public void feed(Pet pet){
     		pet.eat();
     		}
     	}
     ```
     以上的代表中表示:Master和Dog以及Cat的关系就脱离了,Master关注的是Pet类。
     这样Master和Dog以及Cat的耦合度就降低了,提高了软件的扩展性。
    
软件开发原则
七大原则最基本的原则:OCP(对扩展开放,对修改关闭)
目的是:降低程序耦合度,提高程序扩展力。
面向抽象编程,不建议面向具体编程。
问题简答
私有方法无法覆盖。
	方法覆盖只是针对于“实例方法”,“静态方法覆盖”没有意义。(这是因为方法覆盖通常和多态联合起来)

总结两句话:
	私有不能覆盖。
	静态不谈覆盖。

在方法覆盖中,关于方法的返回值类型。
	什么条件满足之后,会构成方法的覆盖呢?
		1、发生具有继承关系的两个类之间。
		2、父类中的方法和子类重写之后的方法:
			具有相同的方法名、相同的形式参数列表、相同的返回值类型。
	
	学习了多态机制之后:
		“相同的返回值类型”可以修改一下吗?
			对于返回值类型是基本数据类型来说,必须一致。
			对于返回值类型是引用数据类型来说,重写之后返回值类型可以变的更小(但意义不大,实际开发中没人这样写。)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值