java面向对象总结

1.继承

  1. 1 类的继承格式
class supperClass {
}//父类
class subClass extends superClass{
}//子类

1.2 继承关键字: extends 和implement的区别:

  • extends只能实现单继承,也就是说一个子类只能有一个父类,extends只能继承一个类
  • implement关键字可以变相的使java有多继承的特性,适用范围为类继承接口的情况,可以同时继承多个接口,接口与接口之间采用逗号分隔

1.3 super与this关键字

  • super 关键字可以实现对父类成员的访问,用来引用当前对象的父类
  • this关键字:指向自己的引用
  • final关键字可以把类定义为不能继承的,即最终类 ;或者用于修饰方法,且该方法不能被子类重写
class animal{
void eat();
}
class cat extends animal {
void eat();
void eatTest(){
    this.eat();//指向自己的引用
    super.eat();//调用父类的方法

}} 

2.java重写(Override)与重载(Overload)
2.1重写
重写是子类对父类允许访问的方法的实现进行重写,外壳不变,核心重写
子类抛出异常时只能抛出父类异常的子类异常
2.1.1 方法的重写原则
- 父类和子类如果在同一个包中,那么子类可以重写除了被声明为private和final的父类所有方法
- 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法
- 重写的方法能够抛出任何非强制异常,无论是否被重写的方法是否抛出异常。但是重写的方法不能抛出新的强制性异常(符合继承的特性),或者比被重写方法声明的更广泛的强制性异常
- 构造方法不能被重写
- 不能重写无法被继承的方法(被final声明的方法),还有 static方法

JAVA中的异常分为两类
引用的博客链接
java中的异常分为两大类,强制性异常(CheckedException)和非强制性异常(UncheckedException)。而java中除了RuntimeException外,都是强制性异常。
- 强制性异常:所谓强制性异常就是在编写程序的过程中必需在抛出异常的部分try catch 或者向上throws异常。
- 非强制性异常:所谓非强制性异常就和上面相反了。虽然也可以try catch或者thows,只不过这不是强制性的。

2.2重载

  • 重载是在一个类里面,方法名字相同,参数不同,返回类型可以相同可以不同
  • 每个被重载的方法都需要一个独一无二的参数类型列表
  • 最常用的方法就是构造器的重载

    重载规则

  • 被重载的方法必须改变参数列表

  • 只要方法名字相同,参数顺序,参数名称,参数个数有一个以上不同就可以
  • 被重载的方法声明异常不受限制
  • 方法能够在同一个类或同一个子类中被重载
  • 不能以返回值类型作为重载函数的区分标准,因为 返回类型可以相同可以不同

小结:
方法的重写和重载是java多态性的不同表现 ,方法重载是一个类的多态性表现,而方法重写是子类与父类 的一种多态性表现

3.多态

  • 多态表示同一个行为在不同情况下有不同的表现,多态存在的三个必要条件:继承、重写、父类引用指向子类对象
  • 使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,编译错误,如果有再去调用子类的同名方法。使得程序有良好的拓展

3.1虚方法

public class SuperClass {
void set();}
public class SubClass extends SuperClass{
void set();
}
public class Demo{
public static void main(String[] args){
    SuperClass classA=new SubClass();
}}//编译的时候 用的是SuperClass 的set()方法,执行过程JVM调用的是SubClass里面的set方法

4.java抽象类
抽象类不能实例化对象,只有被继承以后才能被使用,java中抽象类表示一种 继承关系,一个类是能继承一个抽象类,而一个类可以实现多个接口。

  • 只有非抽象类的抽象子类可以创建对象
  • 抽象类不一定包含抽象方法,但有抽象方法的类必定为抽象类
  • 抽象类中的抽象方法知识声明,不包含方法体,
  • 构造方法,类方法static不能声明为抽象方法(不能被继承)
  • 抽象类的子类必须给出抽象类中抽象方法的具体实现,除非该子类也是抽象类

5.java封装

封装可以防止该类的代码和数据被外部定义类随机访问和修改

实现封装的步骤

  1. 用访问控制修饰符,如private
  2. 对每个值提供对外的公共方法访问,创建一对赋取值方法,用于对私有属性的访问
class void setName(String name){
this.name=name;//this可以避免实例变量和局部变量之间发生同名的冲突}

6.java接口

接口 Interface 是抽象类的集合,接口的所有方法必须是抽象方法,没有构造方法,不能包含除了static 和final变量,接口不是被类继承,而是被类实现,支持多重继承
接口特性

  • 接口中的每一个方法也是隐式抽象的,接口中的方法被指定为public abstract
  • 接口中可以含有变量,但是接口中的变量会被指定为public static final (并且只能是public )
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法

对比抽象类和接口

  • 抽象类中的方法可以有方法体,接口不可以(只要有抽象方法就会成为抽象类)
  • 抽象类中的成员变量可以使各种类型的,而接口中的成员变量只能是public static final类型
  • 接口 中不能含有静态代码块及静态方法(static),而抽象类可以
  • 一个类只能继承一个抽象类,一个类可以实现多个接口
//接口的声明
[访问控制修饰符] interface 接口名称 [extends 其他的类名]{
    //声明变量
    //抽象方法
}
public interface NameOfInterface{
//任何类型 final,static 字段
//抽象方法}

接口有以下特性:

  • 接口隐式抽象,声明接口及方法不用abstract关键字
  • 接口中的方法都是公有的
interface Animal{
public void eat();
public void  travel();
}

接口的实现
类用implement实现接口中的方法

public class cat implement Animal{
public void eat(){
    System.out.println("Animal");
}
public void  travel(){
System.out.println("Animal");
}
}

接口之间的继承
接口之间的继承使用extends关键字,

public interface Animal{
public void eat();
public void sleep();
}
public interface Animal_2{
public void eat();
public void sleep();
}
public interface cat extends Animal,Animal_2{
public void see();//cat 类继承了两个方法,自己声明了一个方法
}

接口允许多重继承
标记 接口
没有任何方法和 属性的接口,仅仅表明它的类属于一个特定的类型,供其他代码进行测试
标记接口的两个作用:

  • 建立一个公共的父接口
  • 向一个类添加数据类型(通过多态实现)

7.java包机制

为了更好的组织类,java提供了包机制,用于区别类名的命名空间

包的作用

  • 把功能相似或相关的类组织在同一个包中,方便类的查找和使用
  • 包可以避免名字冲突,通过不同的包名可以区分名称相同的类
  • 包限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

java使用包这种机制是为了防止命名冲突,访问控制,提供搜索和定位类接口,枚举(enumerations)和注释(annotation)等

//java包的格式
package net.java.util;
public class Something{
...}

import关键字
使用某一个包的成员,必须在java程序中明确导入该包,用import语句完成。import语句应该放在package语句之后

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值