面向对象:
用代码高度去模拟显示世界,以便为人类业务服务。
java是一种面向对象的高级编程语言。
类:是描述相同事物的共同特征的抽象
对象:是具体存在的实例,是真实的,实例==对象
代码层面:必须现有类才能创建出对象。
定义格式:
修饰符:class 类名{
}
一个代码文件中可以定义多个类,但只有一个类是用public修饰的,而且public修饰的类名必须跟代码文件名称 一样。
类中的五大成分:成员变量:、成员方法、构造器、代码块、内部类
this关键字
this 代表了当前对象的引用
this关键字可以用在实例方法和构造器中
this用在方法中,谁调用这个方法,this就代表谁
this用在构造器,代表了构造器正在初始化的那个对象的引用。
= ==============================================================
封装回顾
面向对象三大特征:封装、继承、多态
封装:1.提高安全性 2.可以实现代码的组件化
提供成套的get,set,方法,暴露成员变量的取值赋值
public修饰符,是公开的 公交车的意思
封装核心思想:合理隐藏,合理暴露。
封装已经成为java代码的风格习惯,即使没有任何意义,还是要按照封装的规范些代码
成员变量私有,提供get,set方法,没有道理,这就是代码封装的风格
===========================================================================
static关键字描述
static == 静态== 修饰的成员(方法和成员变量)属于类本身
按照有无static修饰,成员变量和方法可以分为:
成员变量:
(一)静态成员变量(类下的变量):
有static修饰的成员变量成为静态成员变量,也叫类变量,属于类本身是可以直接用类名.什么访问
(二)实例成员变量
无static修饰的成员变量称为实例成员变量,属于类的 每个对象的,必须用new类的对象来访问
成员方法:
(一)静态方法
有static修饰,属于类本身,可以直接访问
(二)实例方法
无static修饰称为实例方法,需通过new类的对象来访问
小结:
有static修饰的类叫静态成员变量,与类一起加载一次,直接用类名调用即可
无static修饰的类,类的每个对象叫实例成员变量;它与类的对象一起加载, 对象有多少个,实例成员变量就加载多少份,必须用类的对象调用
有static修饰的属于类叫静态方法,直接用类名调用
无static修饰的属于类的每个对象的 叫实例方法,必须用类的对象调用
=================================================
成员变量的分类和访问
静态成员变量有static修饰,属于类本身,与类加载一次。不建议用对象访问静态成员变量
面试问题
八种访问形式的问答:
a.实例方法是否可以直接访问实例成员变量? 可以的!因为它们都属于对象。
b.实例方法是否可以直接访问静态成员变量? 可以的!静态成员变量可以被共享访问。
c. 实例方法是否可以直接访问实例方法? 可以的!实例方法和实例方法都属于对象。
d. 实例方法是否可以直接访问静态方法? 可以的!静态方法可以被共享访问
--------------------------------
a.静态方法是否可以直接访问实例变量? 不可以! 实例变量必须要用对象来访问
b.静态方法是否可以直接访问静态变量? 可以的,,静态成员变量可以被共享访问。
c.静态方法是否可以直接访问实例变量? 不可以!实例方法必须要用对象访问。
d.静态方法是否可以直接访问静态方法? 可以的,静态方法可以被共享访问。
========================================================
继承的概述和继承格式
继承是java中一般到特殊的关系,是一种子类到父类的关系。
被继承的类称为 父类this 超类super
去继承父类的类称为:子类
====================================================
基础的使用和案例
父类
学生类
老师类
结果
继承的使用案例
1.构造方法不会继承,因为子类有子类的构造器父类有父类的,不相干、
2.父类的成员变量只要不是私有的(private)子类就不能继承---其实子类是有父类的私有变量的 只是访问不了,有高级方法现在没意义学
3.父类的静态成员属性和静态方法是能被继承的, 但是 其实并不是继承,而是共享,因为静态类在加载的时候只加载一次,子类继承父类的静态public东西
是共享给子类的,
小结:
引入:
子类继承父类,子类就得到了父类的属性和行为。
但是并非所有父类的属性和行为等子类都可以继承。
子类不能继承父类的东西:
子类不能继承父类的构造器:子类有自己的构造器。(没有争议的)
有争议的观点(拓展):
子类是否可以继承父类的私有成员(私有波员变量,私有成员方法)?
+-我认为子类是可以继承父类的私有成员的,只是不能直接访问而已。
--以后可以暴力去访问继承自父类的私有成员~~~
子类是否可以继承父类的静态成员?
--我认为子类是不能继承父类的静态成员的,
—-子类只是可以访问父类的静态成员,父类的静态成员只有一份可以被子类共享访问。
共享并非继承。
继承后的特点————成员变量
小结:就近原则:
子类有就找子类,子类没有找父类,父类没在就报错
this 代表当前对象的引用,
super 代表当前类的引用,在继承中可以访问到最高继承中父类变量
*/
方法重写
以pravite修饰的方法叫私有方法父子类都
以static修饰的静态方法不能重写
不能重写
封装:代码的安全和组件化
继承:提高代码复用性,减少冗余
多态:右边对象可以实现组件化 切换,业务功能也随之改变,便于拓展和维护