Java面向对象思想
1.现实生活中
面向过程
吃菜:1.买菜-->2.洗菜-->3.炒菜-->吃菜
面向对象 :
吃菜: 1.找炒菜对象-->吃菜
类:把一类事物中的静态属性(成员变量),动态行为(方法)统称在一起;
public class Person(){
String name;
int age;
public void play(){
}
}
对象:当前类的实例化,称之为对象
创建对象
Person person = new Person();
2.构造方法
定义:与类名相同且没有返回值
构造方法 --- 每一个类中都有一个默认不带参的构造方法;
规则:
1.方法名和类名相同
2.不存在返回值
普通方法:
修饰符 返回值类型 方法名(参数列表)
public void add(){
}
构造方法:
修饰符 方法名(参数列表)
public class Student{
public Student(){
}//无惨构造
public Student(int a,int b){
}//有参构造
}
调用方式:创建对象时通过new语句调用。
作用:用来初始化操作。
调用自身的构造方法,用this(),;//this只能写在首行,且只能有一个
构造方法的执行顺序 super和this的举例
继承
好处:利于扩展,增加大代码的维护性
子类可以使用父类所有的成员(属性和方法);
子类的构造方法必须要先调用父类的构造方法;
子类的构造方法首行必须调用父类的构造方法
super 关键字,必须写在子类的首行,用来调用父类的构造方法,如果没有,编译器会自动添加。
super也可以用来调用父类的方法,super.方法名();
如果子类的构造方法中没有指定调用父类的构造方法,那么编译器会自动为子类添加调用父类的无参的构造方法,如果此时,父类没有无惨构造,那么则报错.
方法的重载
规则:方法名相同,参数列表不同,跟返回值没关;
作用:解决了代码通用性的问题
方法的重写
规则:修饰符、返回值、方法名相同、参数列表相同。重写必须在继承过后才能使用.
重写的作用:当父类中的方法对子类来说不在适用。
this 关键字
this:当前对象的引用
作用:当局部变量与成员变量相同时,区分成员变量和局部变量。
修饰符的权限
public:当前项目中都能使用
protected:当前包下及子类能使用
缺省 : 当前包下能使用
private:当前类能使用
附上下图 能更好的理解:
static关键字
修饰符,静态的:能修饰变量、方法、类
1.被static修饰的变量,称为静态变量,也可叫全局变量,它跟类有关跟对象没有关系,单独存储在方法区,不用static修饰的属性叫成员变量。
成员变量和静态变量的区别:
静态变量跟类有关,在类加载时被初始化,跟对象无关
成员变量跟对象有关,必须使用对象来使用,new phone();
静态方法里面不能存放非静态的属性;
静态属性直接使用类名.属性使用。
2.静态方法直接使用类名.方法名使用
----一般工具类中的功能块都会写成静态方法
3.static块
1.优先于main方法
2.一般用于加载音视频资源、图片都会采用静态加载
static{
。。。
}
5.静态变量的缺点:静态变量在此类加载时会被分配空间,直到程序结束时空间才会被回收
final关键字
final :最终的,可以修饰变量,方法,类
final 修饰变量:最终的变量,仅能赋值一次
修饰的是成员变量必须初始化
修饰的是局部变量需要在使用前赋值一次
final修饰方法:最终的方法,禁止重写
final修饰的类:最终的类,禁止扩展,不允许继承 如:String
造型
向上造型:
向上造型:在Java中,支持声明类型为父类类型,实际赋值类型为子类类型
Animal animal = new Cat();
允许将范围小的数据赋值给范围大的数据,系统会自动进行转换,将这种转换称为:向上造型(向上转型);
向上造型仅仅改变了数据类型,实际内容不变;
仅使用父类中的成员,那么可以直接声明为父类类型 -- 向上造型,在使用向上造型后,还想使用子类独有成员,则需要向下造型
向下造型:如果想要使用子类的独有属性则需要转换为子类实例,在通过子类实例进行调用称为向下造型(向下转型)
多态
多态产生的条件:
1.需要继承
2.必须重写
3.数据类型相同, 实际赋值不同.如:Animal a1 = new Cat();
抽象
定义:使用abstract修饰的类、方法、变量称为抽象
作用:在搭建项目结构时,如果不清楚当前具体的实现方式,将父类中的方法抽象化,强制子类进行重写,项目搭建时一般会将父类作为抽象类,将行为抽象化,之后再完善.
1.只要类中有抽象方法,那么类必须是抽象类,抽象类中可以没有抽象方法。
2.继承抽象类,子类要么实现父类的所有方法,要么变成抽象类
3.抽象类不能被实例化
4.抽象类有构造方法
接口
定义:使用interface修饰的类 称为接口,接口是一个特殊的抽象类。
作用:接口在开发过程中可以快速分离工作内容,接口是一个规范,定义了一个接口,开发者就可以继续他的业务逻辑代码了。
1.接口中的变量只能使用public 修饰 即使不写,默认为public static final ==>常量
2.接口中没有构造方法
3.一个类可以实现多个接口
4.接口可以实现多继承//基本不用
5.接口中的方法,是子类来实现的,接口中的方法默认是public abstract 返回类型 方法名()类型。static defalut abstract 默认只能使用一种