面向对象总结

面向对象

定义类

类是由字段和方法两部分构成的.
面向对象设计的过程就是抽象的过程,也是设计类的过程,一般分为三步完成。

  1. 发现类,类定义了对象将会拥有的特性(字段)和行为(方法)。

  2. 发现类的字段,对象所拥有的特性在类中的表示称为类的字段。

  3. 发现类的方法,对象执行的操作称为类的方法。

    定义类的语法格式如下

    public class Student {
    	// 类的字段声明
    	// 类的方法声明
    }
    

类的字段

定义字段的语法格式如下:

[访问修饰符] 数据类型 字段名;

语法解析

(1) 访问修饰符是可选的。

(2) 除了访问修饰符外,其他部分与定义变量相同。

创建对象

创建对象的语法格式如下:

Student stu = new Student();

语法解析:

(1) new是关键字,称为实例化。

(2) 左边的类名为对象的数据类型。

(3) 右边的类名( )称为类的构造方法。

成员变量

成员变量的作用域
public class Person{
	private String name;
    priavte int age;
}

这两个变量就是成员变量。它们的作用域在整个Person类中。

局部变量的作用域

局部变量就是定义在方法内部的变量。work( )方法中的变量就是局部变量,局部变量只能在方法内部使用。

这个money()就是方法,里面的int age=10就是局部变量。

public class Person{
	private String name;
    priavte int age;
    public void money(){
        int age=10;
    }
}
成员变量与局部变量的区别
  • 作用域不同。局部变量的作用域仅限定于定义它的方法,在该方法外无法被访问。成员变量的作用域是在整个类内,所有的成员方法都可以使用它。如果访问权限允许,还可以在类外部使用成员变量。
  • 初始值不同。对于成员变量,如果在类定义中没有给它赋予初始值,Java会给它赋一个默认值,byte、short、int、long类型的默认值是0,boolean类型的默认值是false,char类型的默认值是’\u0000’(空字符),float、double类型的默认值是0.0,引用类型的默认值是null。但是java不会给局部变量赋初始值,因此局部变量在使用前必须初始化。

类和对象的一些注意事项

一个代码文件中,可以写多个class类,但只能一个用public修饰,且public修饰的类名必须是代码文件名。

对象与对象之间的数据不会相互影响,但多个变量指向同一个对象时就会受影响了。

如果某个对象没有一个变量引用它,则该对象无法操作了,该对象会成为所谓的垃圾对象。

构造器

1.什么是构造器?
    构造器其实是一种特殊的方法,但是这个方法没有返回值类型,方法名和类名必须保持一致。
public class Cat {
    private String color;
    private String breed;

    public Cat() {//无参构造
    }

    public Cat(String color, String breed) {//有参构造
        this.color = color;
        this.breed = breed;
    }
}
2.构造器什么时候执行?
    new对象就是执行构造方法。
3.构造方法的应用场景是什么?
    在创建对象时,可以用构造方法给成员变量赋值。
4.构造方法有哪些注意事项?
    (1)在设计一个类时,如果不写构造器,Java会自动生成一个无参数构造器。
	(2)一定定义了有参数构造器,Java就不再提供空参数构造器,此时建议自己加一个
无参数构造器。

this关键字

  1. 区别成员变量和局部变量。
  2. 调用成员方法,(哪一个对象调用方法方法中的this就是哪一个对象)。
  3. 调用构造方法的重载方法,只能在构造方法中使用,并且只能在第一句。

static关键字

静态变量属于类,各个对象共享。

实例变量属于方法,只有在方法内部使用,每个对象私有。

静态变量只能被静态变量访问,实例变量既可以访问实例变量,也可以访问静态变量。

静态变量可以类名.属性名,方法名.属性名调用。

实例变量之只能通过方法名.属性名的方法获取。

静态变量在类加载的时候初始化,实例变量在创建对象的时候初始化。

静态成员不能使用this,实例成员可以使用this。

三大特性(继承,封装,多态)

封装:

通过访问修饰控制成员变量和成员方法的访问权限,对外提供访问方式(合理隐藏,合理暴露)。

访问修饰符:3个4种

  • public :任何地方都可以访问
  • protected :同包或不同包子类可以访问
  • private :只能在本类中才可以访问
  • package-access:同包任意类

继承:

子类对父类扩展,子类可以继承父类的属性和方法,从而实现代码的复用,并且可以添加自己的属性和方法,或重写父类的方法,实现对父类的扩展,在Java中,类只能被单继承。

重写(覆盖)和隐藏

  • 在继承中,子类和父类的方法名和参数列表相同,返回值类型一致,访问修饰符相同或变大,抛出异常相同或变小。

  • 在继承中,成员变量只能被隐藏,不能被重写。

  • 变量可以交叉隐藏,实例变量隐藏静态变量,静态变量隐藏实例变量

  • static方法不能被重写,只能被隐藏

  • static方法不能重写实例方法,实例方法也不能重写static方法

super关键字:

  • 在子类调用父类的构造方法,必须放在构造方法的第一行
  • 调用父类的属性和方法
  • super只能出现在子类,不能在static成员中使用

子类初始化过程

  • 加载父类,初始化父类的静态变量
  • 执行静态代码块和赋值等操作
  • 加载子类,初始化子类的静态变量
  • 执行子类的静态代码块和赋值等操作
  • 初始化父类的实例变量
  • 执行父类的实例代码块和赋值
  • 执行父类的构造
  • 初始化子类的实例变量
  • 执行子类的实例代码块和赋值
  • 执行子类的构造

final关键字:

  • final可以修饰类,方法和属性
  • final修饰的类不能被继承
  • 修饰的方法不能被重写,但能重载
  • final修饰的变量不能被再次赋值

this和super的区别

区别thissuper
调用方法访问本类的方法,包括从父类继承的方法。访问父类的方法。
调用构造this表示调用本类的构造方法,必须放在构造方法的首行super表示调用父类的构造,必须放在子类构造的方法首行。如果表示调用父类的无参构造,即super()可省略。
调用字段this.字段:调用当前对象的字段,包括从父类继承的字段。super.字段:调用的是父类的字段。
使用this在实例方法中可以使用,在static方法中不能使用,每个类都有thissuper在实例方法中可以使用,在static方法中不能使用,只能出现在子类中
其他区别this表示当前对象super表示父类对象

多态

类或方法的多种形态。父类引用指向子类,调用方法的时候要看具体的那个对象,方法重写是实现运行多态的基础;方法重载是编译时多态;多态允许针对不同对象调用统一的接口,实现代码的复用性和扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值