java入门笔记05之面向对象三特性+抽象类+接口

本文详细介绍了面向对象编程中的核心概念,包括封装(数据隐藏与get/set方法)、继承(单继承与抽象类)、多态(方法重写与对象多态)以及抽象类和接口的使用。强调了高内聚、低耦合的设计原则,探讨了如何通过抽象类和接口实现代码的灵活性和可维护性。此外,还提到了匿名内部类和类型转换在实际编程中的应用。
摘要由CSDN通过智能技术生成

封装: ctrl+h打开类树
该漏的漏,该藏得藏;
程序设计要求,高内聚,低耦合!
高内聚:就是:类的内部数据操作细节自己完成,不允许外部干涉。
低耦合:仅暴漏少量的方法给外部使用;
数据的隐藏:
  通常,应该禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
  属性私有:get/set
作用:
  1提高程序的安全性,保护数据
  2隐藏代码的实现细节
  3统一接口
  4系统可维护性增加了;

继承:
  继承的本质是对某些类的抽象,从而实现对世界更好的建模
  extands的意思是扩展,子类是父类的扩展;
  java只有单继承,
继承是类和类之间的关系;
  obect类,所有类打的父类,jav中的类,都直接或者间接继承Object类
  super,父
方法重写:
  子类继承了父类就会拥有父类全部的方法,如果添加私有属性,则不能拥有;
多态:
  —所有抽象方法都是多态的!
  一个对象的实际类型是确定的
  new student();
  new person();
  //可以指向的引用类型就不确定了,父类的引用指向子类
  Person s1= new student();
  子类重写了父类的方法,执行子类的方法;
多态注意的事项:
  多态是方法的多态,属性没有
  父类和子类没有联系,类型转换异常:ClassCastException
  存在条件:继承关系,方法需要重写,父类引用指向子类对象Person s1= new student();
  staic方法 属于类的,他不属于方法,不能被重写;
  final 修饰的也不能重写;
  private私有的也不能重写;
强制类型转换,成功的条件只有如下的俩种:
  1、引用所指向的对象,就是该类型
  2、引用所指向的对象,实现了该接口或者继承了该类
  强转时若不符合如上的条件,则发生ClassCastException类型转换异常
  建议强转之前,先通过instanceod判断引用的对象是否是该类型
  只要强转 ,必须加判判断
    if(0 instanceof b){
     b 小 = (小 b)大0 ;
    };
设计规则:能用超类,绝不用派生类,能用接口,绝不用 实现类!
  instanceof类型转换,引用类型转换
  类型之间转换:父 子
  子类转换父类,可能丢失自己的本来的一些方法;

staic关键字:
  与类一起加载,可以直接使用 类名+.就可以调用;
  静态代码块(只在第一次执行)最先执行,匿名代码块次执行,再者是构造方法

行为的多态:
  同类型的引用指向不同的对象时,有不同的实现;
  —所有抽象方法都是多态的!
  同一个对象被造型为不同的类型时,有不同的功能
  (所有对象都是多态的
  对象的多态,你,我,水,,

对象的多态:
  Mee mee=new Mee();===========区别这是对象
  儿子 m1=mee;
  学生 m2=mee;
  铁男 m3= mee;
  一定向上造型
  超类型的引用指向派生类的对象
  能点出什么,看左边引用的类型
  能造型成为的数据类型有:超类 +所实现的接口

抽象类:
  abstract 修饰的类就是抽象类: 类继承 extends:只有单继承没有多继承,但是接口可以变相实现多继承
  abstract 就是约束,方法体不实现,有子类 implement实现后 帮我们实现;
  抽象方法,只有方法名字,只有方法的定义,没有具体的实现(连{}都没有)
  包含抽象方法的类必须是抽象类
  抽象类不能被实例化(new对象)
  抽象类是需要被继承的,派生类:
  重写所有抽象方法-----------------变不完整为完整
  也声明为抽象类---------------------一般不这么用
抽象类的意义:
  封装共有的属性和行为---------------代码复用
  为所有派生类提供统一的类型------向上造型
  可以包含抽象方法,为所有派生类提供统一的入口(能点出来),
  派生类的行为不同,但入口是一致的,同时相当于定义了一个标准(强制重写)
匿名内部类:-----------------------大大简化代码
  若想创建一个类(派生类)的对象,并且对象只被创建一次,可以做成匿名内部类
  在匿名内部类中默认外面的变量为final的----
  普通类:只有实现 class
  抽象类:具体实现和规范(抽象方法)都有 abstract

接口 :存在的意义就是让别人使用的–所以都是pubilc
  是一种引用数据类型
接口的意义:
  只有规范! interface定义的
  定义的是一组规则,体现了现世界中:“如果你是、、、则必须能、、、”
  接口的本质是契约:制定好后大家都遵守。
  实现多继承:
  制定了一套标准,规则

  只能包含 常量和抽象方法;
  接口里边 只要是数据 都是常量,但可以声明变量
  接口是完全不完整的,不能被new
  但,接口是需要被实现,子类都叫实现类;
  实现类:必须重写所有的抽象方法 implements
  一个类,可以实现多个接口,用,号隔开;
  若又继承又实现 ,则先继承在实现;
  接口也可以继承接口
作用:
  1约束
  2定义一些方法,让不同的人实现:10~1 多对一
  3接口中的方法都是abstract默认修饰的;
  4属性都是staic final修饰的
  5接口不能被实例化在~接口中没有构造方法;
  6implements可以实现多个接口(就变相的是多继承
  7子类必须重写接口中的方法
什么时候使用:
  接口是对继承的单根性的扩展-
  就是为了类的多实现(继承)的,因为java规定只能单继承,所以换成实现;
  当部分共有的时候,使用接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值