类和对象
1 对象、类
对象:一个实体
对象包含静态特征和动态特征
静态特征:属性(实例变量)
动态特征:行为(实例方法)
把具有相同属性和方法的对象分为一类
2 现实对象转化程序的对象
学生类:
属性: 学号 ,姓名,性别,年龄,联系方式,地址...
方法: 吃饭.学习....
3定义类和创建对象
3.1)定义类的语法
访问修饰符class类名{
定义属性
定义方法
}
1.1权限访问修饰符:public,默认的
1.2类名:见名知义
3.2)创建对象
类名 对象名= new 类名();
1)访问对象属性
对象名.属性名
属性有默认值
byte short int long :0
float double :0.0
char:'\u0000'
boolean: false
引用类型:null
2)访问实例方法(属于对象所有)
对象名.方法名();
构造方法
类名 对象名 = new 构造方法()
构造方法的方法名与类名相同
构造方法的作用:与new关键词一起使用
创建对象,同时给属性赋初始值。
构造方法默认有一个无参构造
当创建一个构造后系统不会再提供无参构造
需要自己进行创建无参构造。
方法重载(overloading):
在一个类中:有多个方法名相同方法,但参数不同的方法
参数不同:个数不同,类型不同,顺序不同
无关:与返回值类型无关,与访问修饰符无关,与参数无关
Java 重写(Override)与重载(Overload) | 菜鸟教程 (runoob.com)
this:
代表引用对象。
在构造方法中使用其他的构造方法使用this(),必须放在第一行,否则报错。能够减少冗余,具有可重复性
当方法中形式参数和属性变量名相同时,使用this.变量名调用对象属性。
成员变量和局部变量的区别
成员变量在整个对象存在期间存在,局部变量在方法运行期间存在。
成员变量有默认值,局部变量需要先赋值在使用。
成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上
访问修饰符
public protected default private
Java 继承详解 | 菜鸟教程 (runoob.com) 修饰符详解。
一、封装
1实现属性封装
1)属性私有化
2)提供公共的getter setter方法
set赋值方法:setXxx():属性名首字母大写,第二个字不能大写
属性为boolean类型 getXXX()变为isxxx();
二、继承
满足子类 is a 父类
java.lang.Object类是所有类的父类
子类可以继承父类的哪些内容?
1)子类可以继承父类中所有的实例变量和实例方法
2)不能继承父类的构造方法
3)子类可以有自己的实例变量和方法
创建子类是否调用父类的构造方法?
调用了父类的构造方法,在执行子类的构造方法
创建了子类对象,为什么会调用父类的构造方法。
继承了父类的属性,属性初始化,赋初始值
子类构造方法如何访问父类的无参构造方法?
super()-->访问无参,可省略不写
super(参数)-->访问有参,必须写在构造方法第一行
编程时是先有子类还是先有父类?
分析 把子类共有的属性和方法抽象得到父类
编程 父类-->子类
super关键字
1)super关键字是什么?
super在子类对象中,访问父类中成员
2)super在哪里使用?
子类的成员方法
子类的构造方法
3)super可以访问哪些内容?
在子类成员方法:访问父类的实例变量和实例方法
super.属性名
super.方法名()
在子类构造方法:使用父类的实例变量和实例方法
访问父类的构造方法:放在子类构造方法的第一行;
方法重写
子类重新定义一个与父类相同的方法
1)在继承关系中 方法重写
2)方法名相同 参数相同 返回值类型相同
3)访问权限大一些或者一样
4)不能声明更广的异常
5)添加注解@override
子类不能重写父类的哪些
1)构造方法
2)parivate 修饰
3)final修饰
4)static修饰
5)属性不能被重写
三 多态(类型转换)
1)基本类型转换
自动类型
强制类型
2)引用类型 (类之间有继承关系)
父类引用子类对象时,可以访问哪些内容
访问父类的所有属性和实例方法
执行子类重写的方法而非父类的方法,如果非重写方法,找父类方法.
不能访问子类所有的属性和特有的方法
使用关键词: instanceof 判断
对象名 instanceof 类 返回值为boolean
右侧类与对象必须先有继承关系
Java写继承子类的时候报错There is no default constructor available in ‘子类名‘_子类有id,报错-CSDN博客
单例模式