--------------------类和对象-----------------------
1、没有定义构造函数却可以使用?
在用户没有定义任何构造函数的情况下,JVM会自动生成一个无参的默认构造函数
2、在同一个类中要去调用属性或者方法使用this引用
java中的this引用:每一个类都有一个this引用,this引用指的当前对象本身。
3、构造函数可以有多个,多个构造函数还是方法名相同但丝毫参数不同,
这样我们可以使用不同的构造函数去构造不同的对象
4、构造函数来讲,在实例化对象的时候只调用一次,而成员可以被调用多次
静态变量:变量名前加static关键字 类中所有对象所共享
对于静态变量来说,它是被存储在一个公共的地址,因为是一个公共的地址,
所以某一个对象修改它,对于另外一个对象就是可见的。
静态方法:方法名前加static关键字
特性:静态方法来讲不能访问成员变量,不能调用成员方法
没有this引用
静态变量,静态方法属于类,推荐使用类名.去调用,当然使用对象.去
调用也不会出错。
------------------多态-----------------------
多态就是用基类引用,引用不同的派生类对象,通过基类的引用变量调用同名覆盖
方法,这个基类引用引用了哪个派生类对象,就会调用哪个派生类对象重写的方法
它的好处就是,在代码设计的时候,不用给每一个派生类都提供相应的入口,而
是用基类引用接收所有的派生类对象,然后调用同名覆盖方法,实现多态调用
多态调用的实现(依赖函数的动态绑定实现的)
----------------接口---------------
public static final(常量)静态变量
接口方法默认为 public abstract void ....
特征:
接口不能直接使用new操作符创建一个接口对象
接口可以看作一个特殊的类
接口只能有方法声明
实现接口;implement关键字
接口中的功能和实体是“有”的关系;
接口中的变量:public abstract final;
接口可以有多个实现,接口与接口之间也是可以相互继承的;
接口定义的变量都是public static final 修饰的,定义的方法都是public abstract 修饰的,而且不能实现代码实现;
jdk1.8之后
接口可以提供默认方法:default
允许公有的静态方法存在
------------------继承-------------------------------
封装属性访问-》getter setter 方法
super引用:基类对象应用,
重载:参数列表不同,方法名相同;
重写:1.参数列表相同,方法名相同;
2.在具有继承关系的不同类里面;
区别:1.2.
3:返回值类型(重写相同;重载可以不同)
对象转换:
向上转换:子类的对象赋予基类的引用;
向下转换:
声明时是什么类型,编译器就认为是什么类型,(强转);
转换对象必须是子类的实例
instanceOf关键字;(表示判断)
obj instanceOf class
-------------- 封装-----------------
隐藏不想公开给用户的实现
属性: private去修饰
方法: private去修饰
1) 把属性隐藏起来
2) 把细节隐藏起来,只暴露一些供用户调用的接口
--------------抽象类--------------
1.类定义的前面添加abstract
2.和普通类最大的区别是抽象类不能实例化对象
3.抽象类可以定义类变量和实例变量,类方法和实例方法,抽象方法,
一般定义类 - 抽象某个实体的类型
但是基类类型 - 不是为了抽象某个实体的类型而定义的,它是为了
1.把派生类公共的成员抽取出来,放到基类里面,通过继承达到代码的复用
2.在基类里面给所有派生类保留统一的抽象方法,等待派生类重写,实现多态的使用
基类 - 动物
抽象方法:
1.是在实例方法的返回值前面添加abstract,代表该方法不用提供实现
2.抽象方法一般放在基类里面
3.拥有抽象方法的类,一定得定义成抽象类
拥有抽象方法的类 一定是 是抽象类
抽象类 不一定拥有 抽象方法