面向对象编程
一.概述
1.类和对象
2.构造方法
3.访问权限
4.继承
5.多态(最重要)
6.抽象和接口
7.内存分析
以上相对而言重要.
面向对象和面向过程
面向过程:侧重的是过程.
优点:简单
缺点:代码量大了之后,维护性非常差.
面向对象:侧重的是对象,你是上帝视角,你创建一个大象,告诉大象,进冰箱.
优点:可拓展性非常强,维护成本低.
缺点:新手上手难.
类和对象
造车:
1.画图纸.
1.定义车的属性信息:color speed seat
2.定义车的动作:跑
2.拿着图纸找工厂生产车
面向对象的世界里:
类:就是图纸
属性:这一类事物拥有的共同属性
动作:这一类事物共同能执行的功能
对象:使用类创建的具体某一个东西
对象能干什么? 完全取决于类是如何定义的.
写代码:
类要使用class定义;其中,成员变量写在类里,局部变量写在方法里.
public class Car{
// 成员变量 写在类里
public static void main(String[] args){
int age = 18; // 写在方法里的变量 局部变量
}
}
属性:成员变量来描述,直接写在类中的变量.
public class Car{
// 成员变量
String color; //颜色
int speed; // 速度
int seat; // 座位
}
动作:成员方法,不写static
public class Car{
// 成员方法
public void run(){
System.out.println("车能跑");
}
}
创建对象
public class Car{
public static void main(String[] args){
// 在面向对象的世界里 变量是没有市场的 这种变量被称为引用
// java分为两种数据类型: 1.基本数据类型. 2.引用数据类型
Car c = new Car; // 创建对象 创建了一辆车 后面想用这辆车 就需要使用c来访问
// 让车去跑.
// 对象或者引用.方法()
c.run(); // .表示调用 "的"
}
}
this关键字
this:当前类的对象.
this可以在方法内部获取到对象的属性信息
this还可以区分局部变量和成员变量
public class Car {
String color;
int speed;
int seat = 5;
public void run(){
// 默认会有一个this 当前正在执行这个方法的对象
// 获取到车的颜色和速度
System.out.println(this);
System.out.println("车能跑");
}
public void fly(){
System.out.println(color+"车会飞"); // 此时访问的是成员变量
// 变量的查找顺序:先找自己方法内,如果自己没有 就去this里面找
System.out.println();
}
public static void main(String[] args) {
Car c = new Car(); // 创建对象
c.color = "绿色";
c.speed = 190;
c.run(); // 在调用方法的时候 java会自动的把对象传递给方法 在方法中由this来接收对象
System.out.println(c);
System.out.println(c.color);
// this可以帮助我们区分成员变量和局部变量
}
}
构造方法
在创建对象的时候,自动调用的方法.
语法:
public 类名(传参){
}
注意:
1.构造方法没有返回值
2.java每一个类会默认产生一个无参构造方法.在创建对象的时候,自动调用方法.
作用:在创建对象的时候,给对象设置属性信息
java会默认自动的送给每一个类一个无参数构造方法;但是,如果你写了构造方法,系统就不赠送了.