继承作为java的特色之一 Object就是java中每一个类的父亲

Object类的常用方法


记住 object内的方法通常是不可用的 都是需要我们在自定义类中进行重写 毕竟是所有类的父亲 里面的方法肯定不会特别有实际作用

Read more »

为什么要学习内部类


内部类表示的实物是外部类的一部分 内部类的单独出现没有任何意义

内部类访问的特点

  • 内部类可以直接访问外部类的成员
  • 外部类要访问内部类的成员 必须要创建对象
Read more »

接口的定义和使用


  • 接口的用关键字interface来定义
  • 接口和类之间是实现而非继承 通过implement关键字来表示
  • 接口的子类 要么重写接口中的所有抽象方法 要么是抽象类

注意事项

  • 接口和类的实现关系 可以单实现 也可以多实现 一个类实现多个接口
  • 子类在继承父类的同时也可以实现多个接口
Read more »

抽象的作用


父类中的方法无法满足子类需求时 子类通常会采用重写的机制 但是如果在实际开发过程中 子类没有重写或者忘记重写 那就只能被迫调用父类的方法 所以抽象方法和抽象类的出现就是为了强迫子类对父类的方法进行重写 否则报错

Read more »

包的使用

不同包下的类调用时 要引用包名

1
2
3
4
5
6
public class Test{
public static void main(String []arg){
heima.test.Student stu=new heima.test.Stuent()
// 假如Student类不在当前包下而是在heima.test的包下
}
}

如果不想用包名来调用类 那就在代码前加入import引入包

1
2
3
4
5
6
7
import heima.test.Studnt

public class Test{
public static void main(String []arg){
Student stu=new Stuent()
}
}
Read more »

在以前 对多态的理解就只停留在 重载 和 重写 其实多态还有很多方面的知识
我们先举一个多态的最典型的运用

1
2
3
4
// 假设我们有一个父类person   两个子类student teacher
Person a=new Student();
Person b=new Teacher();

上面两个对象的创建都是正确的 但是a 和 b 和正常的子类又有一些不同

多态有什么典型的运用场景?


其实很简单 假如有一个场景 用户注册的页面 假如一共有三种对象 老师 学生 管理员

那么我们的注册函数传入的对象参数填什么呢? Stuent? Teacher? Admin? 这个时候没有多态的话,我们就要单独创建出三个注册函数 分别传三个对象 但是有了多态就可以用父类作为参数

1
2
3
4
public static register(Person p){
//注册函数
//此时调用函数时 参数无论时学生老师还是管理员都可以成功调用
}
Read more »

当类与类之间 存在相同的内容 并满足子类是父类的一种 就可以考虑使用继承 来优化代码
Java中只支持单继承 不支持多继承 但支持多层继承

每一个类都直接或者间接的继承于Object

子类不能调用父类中的私有方法

子类到底能继承父类中的那些内容

  • 误区1:父类私有的东西 子类就无法继承
  • 误区2 : 父类中非私有成员 就被子类继承下来了
父类 public private
构造方法 不能 不能
成员变量
成员方法 不能

构造方法是否可以被继承?


其实这个问题很简单 构造方法一定要和类同名对吧? 如果你调用父类的构造方法 子类的名称怎么可能和父类名称一样 构造方法自然就冲突了

成员变量是否可以被继承?


注意表格里面 无论是否父类中成员变量是否私有化 子类貌似都可以继承

实际上 子类确实会继承父类中的私有成员变量 不够不能去之间调用
其实黑马这里也是在放屁 私有化成员变量在类外本来就不能调用 无关子类

成员方法是否可以继承


私有化的成员方法不可继承

​ 对于同一个类的不同对象 如果存在一个共享的变量 那我们可以设置成静态变量
静态变量被该类的所有对象共享 静态变量通常直接通过类名来调用

Read more »

需要重点强调一下 Java中的集合是多种数据结构的统称 并不等同与c++中的set概念

其中 ArrayList就是其中的一种

集合和数组的对比

  • 长度 集合的长度是自动扩容自动收缩的
  • 存储类型 集合中存储基本数据类型时 需要对应的包装类
Read more »
0%