封装
基本类型与引用类型
int a=5; int b=a;将变量a的值,拷贝一个给变量b,变量a与变量b是相互独立的;
int[] a={1}; int[] b=a;
将数组a引用的地址,拷贝一个副本给数组b,数组a与数组b相互关联,都指向同一个数组;
Student a=new Student();Stedent b=a;同数组
object oriented programming
//抽象:模具
//类:class
类
1.访问修饰符
访问修饰符 [abstract/static/final....] class/interface/enum 类名称 {}
2.属性
静态特征、成员变量、全局变量
3.方法
访问修饰符 [static/final/volatile/transient...]数据类型 属性名称;
1、程序运行时,自动为属性赋无效的初值,同数组的初始化
方法、动态特征、函数、行为
访问修饰符 [abstract/static/final/native....] 返回类型
方法的名称([形式参数列表]){方法体}
形式参数:定义类型,数量,顺序
(1)入口方法:程序的入口
public static void main(String[] args){…}
(2)构造方法:初始化(赋值)
public 与类同名([形式参数列表]){…}
//构造方法的重载
//同一个类中,方法名称相同,参数不同(数量不同,类型不同,不同类型顺序不同)
(3)自定义方法
//使用方法:功能,参数,返回值
//创建方法:方法的源码
void:方法无返回类型
/方法的返回值:只能有一个
return [值];
1、终止方法
2、返回值
//方法的入参规则:可以有多个
//三个以内,直接入参
//3个以上,封装入参
4.this关键字
当前对象,在同类中某构造方法中通过重载调用其他构造方法,且必须为第一句。
对象
//创建对象
//实际参数:定义值
类 对象名称=new 构造方法([实际参数列表]);
new //一般是引用类型,一般是地址;
//访问对象
//外部访问
//访问对象的{可见}属性
对象名称.属性名称
//访问对象的{可见}方法
对象名称.方法名称{实际参数列表}
//内部访问:直接访问
1.类的认知
//GC JVM垃圾回收器
//数据类:实体类
// 类型 数值
//变量 1 1
//数组 1 n
//类 n(个对象) 1(描述了1个对象)
//对象数组 n n
//业务类
2.static
和基本类型的存在,证明Java不是存粹的面向对象语言
优点:方便跨类调用
缺点:违背oop.
8.基本类型对应的包装类
基本类型 包装类 扩展方法
String String
char Character
byte Byte
short Short
int Integer int Integer.parseInt(String s);
long Long
float Float
double Double
boolean Boolean
继承
目标:
//代码的重用性
//耦合度
//扩展性
继承 extends (继承是为了重用,更是为了扩展)
class B{}
class A extends B{}
所有类的祖宗:object
单根继承
凡是符合“Xxx is a Yyy” class Xxx extends Yyy{}
super 父类的对象,或者调用父类的构造方法,且必须为第一句。
继承本质:每一个子类对象中都有一个独有的父类对象,由虚拟机负责创建。
父类不可继承内容
//私有
//构造方法 super(…)
//访问修饰符 类 同包 异包子类 其它(异包非子类)
public ✔ ✔ ✔ ✔
protected ✔ ✔ ✔
default(无) ✔ ✔
private ✔
继承关系不同性质代码执行顺序(父>子/静态>普通>构造)
父类静态代码块
子类静态代码块
父类普通代码块
父类构造方法
子类普通代码块
子类构造方法
多态
//概念:一种类型多种表现形态
//必要条件:
//继承
//重写
//子类重写父类的方法:参数,返回值完全相同,访问权限>=父类
//类型转换
//☆自动类型转换:子类对象给父类引用
//强制类型转换:将父类引用指向的子类引用,转化为子类对应的实际引用;
boolean is=objectA instanceof class B
((classB)objectA)
//重载也是多态