一、面向对象思想
思想概述:是基于面向过程的一种编程思想
特点:从执行者变成指挥者
实现事物:属性和行为
实现事物如何转化为Java代码:
事物:类;事物属性:成员变量;事物行为:成员方法
二、定义类以及创建对象
class 类名{
成员变量;
成员方法;
}
类名 对象名= new 类名();
对象名.成员变量;
对象名.成员方法;
知识点:成员变量和局部变量区别:位置不同,内存不同,初始化值不同,生命周期
匿名对象:没有名字的对象,只能使用一次
三、封装
将实现的细节进行隐藏,提供公开的访问方式
案例:成员变量私有化,提供公开的get、set方法
private:私有化,只能本类中进行使用
this:指定对象本身;谁的调用this方法,谁就是这个this
构造方法:给对象的成员变量进行数据的初始化
格式:方法名与类名一致
没有返回值类型,void都没有
没有返回值
标准类案例:
class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public Person(){}
public Person(String name){
this.name = name;
}
public void show(){
System.out.println(name);
}
}
知识点:static:静态的,共享的
可以使用类名进行调用
跟随类加载而加载,优先于对象存在,被类的所有对象所共享使用
代码块:{} 根据位置不同:局部代码块,构造代码块,静态代码块,同步代码块
四、继承
格式:
class 子类名 extends 父类名{
}
特点:只支持单继承, 不支持多继承,可以多层继承
注意事项:父类私有不能被继承
构造方法不能被继承,可以通过super关键字进行访问
成员关系:就近原则
方法重写:父子类之间,子类方法覆盖父类同名方法。
知识点:super:代表父类的对象
final:最终的;修饰类,类不能被继承;修饰方法,方法不能被重写,修饰变量,变为常量。
五、多态
同一种事物,在不同环境下,体现出的不同状态
格式:
父类 对象名 = new 子类();
转型:
向上转型:默认转型
父类 对象名 = new 子类();
向下转型:强制转换
子类 对象名 = (子类) 父类的对象名;
运行规则:
编译:看父类
运行:变量看父类,方法看子类
六、抽象类和接口
抽象类:
概述
不想让类创建实体对象时,可以将类进行抽象即可。
特点:
1)抽象类和抽象方法,必须使用abstract关键字进行修饰。
格式:抽象类:abstract class 类名{}
抽象方法:public abstract void 方法名();
2)抽象类中不一定有抽象方法。有抽象方法的类一定是一个抽象类
3)抽象类不能实例化对象(不能创建对象)
4)抽象类的子类:
抽象类;
实现了所有抽象方法的实体类
成员组成:
成员变量,静态常量,构造方法,成员方法,抽象方法
注意事项:
abstract:不能和final private static 同时使用
接口:
概述:
定义一个额外的功能,为事物扩展功能使用
特点:
1)定义接口使用interface
格式:interface 接口名{}
2)实现接口使用implements
格式:class 子类名 implements 接口名{}
3)接口不能实例化
4)接口的子类:抽象类
实现了所有抽象方法的实体类
成员组成:
静态常量,抽象方法
注意事项:
子类同时要继承和实现接口
先继承后实现
class 子类 extends 父类 implements 接口{}
接口可以多实现
class 子类 implements 接口1,接口2{}
七、内部类
其他类中嵌套一个类,这个类被称为内部类。
分类:根据位置不同:
局部内部类 成员内部类 静态内部类
格式:
class A{
class B{
}
}
访问方式:
外界---访问----外部类:直接创建对象
外界---访问----内部类:格式访问:外部类名.内部类名 对象名 = 外部对象.内部对象
外部---访问----内部类:创建内部类对象直接访问
内部---访问----外部类:直接使用
匿名内部类:本质是一个实现接口或者抽象类的实例对象
new 接口名或者类名(){
接口或类的方法重写;
}
知识点:
参数传递:参数如果为基本数据类型:传值,形参改变不影响实参结果,
参数如果为引用数据类型:传地址,形参改变影响实参结果。
权限修饰符:从大到小
public protected 默认 private