非静态成员引用必须与特定对象相对_Java学习笔记(三)——面向对象(上)

194795c960afbb22f7acc0a290f8706c.png

Java学习笔记(三)——面向对象(上)

软件构造

一、对象和类的基本概念

1.对象:一切具体的事物。

2.类:相同或相似对象的一种抽象,是对象的一个模版,描述一类对象的行为和状态,是具有相同属性和方法 (行为)的对象的集合。

类是对象的抽象(模版),对象是类的实体(实例)。

3.属性:对象具有的特征。

4.行为:对象所具有的操作。


二、定义类的方法

  1. 定义类名,用于区分不同的类。
  2. 编写类的属性。
  3. 编写类的方法。 (类的编写过于常见,因此不举例说明了。)
  4. 类中的类型变量:
  • 类中的局部变量与C语言的相同,方法结束后自动销毁。
  • 成员变量定义在类中方法体之外,在创建对象的时候实例化。其可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量和成员变量大体相同,只不过类变量必须声明为static类型。
  • 成员变量与局部变量重名是,局部变量具有更高的优先级。

三、对象的创建与使用

1.创建对象的语法为:

类名 对象名 = new 类名();

如对类People实例化ShiGuang

People ShiGuang = new People();

注意,这里创建的对象,实际上是对象的一个引用,如果再创建一个对象并将一个已创建对象赋值给它的时候,两个实例的地址是相同的。

2.访问对象的属性

对象名.属性

ShiGuang.height = 183;

3.引用对象的方法

对象名.方法

ShiGUang.dance();


四、构造方法

构造方法是在创建对象时为对象填充属性时使用的方法。(默认构造方法是无参构造方法)。

1.构造方法的名称与类名相同,且没有返回值。语法格式:

public 构造方法名(){ //方法名与类名相同
    //初始化代码
}

public class People{
//属性(成员变量)
    double height;
    int age;

//  构造函数,初始化了所有的属性
    public People(double h, int a)
    {
        height = h;
        age = a;
}

如果要创建一个新对象,直接用new + 构造方法就可以,如

People ShiGuang = new People(182,20);

2.如果定义类时没有写构造方法,系统会默认一个无参构造方法,这个构造方法什么也不会做。 当有指定的构造方法之后,系统就不会在添加无参构造方法了。

3.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会根据不同的参数选择相应的方法。


五、static

1.静态成员 前面提到过,类变量与成员变量的区别就是类成员需要使用static修饰。事实上,static修饰的成员就称为静态成员或类成员。它被整个类,也就是类的所有对象共享。

静态成员可以使用对象名进行访问,也可以使用类名直接访问。

2.静态方法 被static修饰的方法是静态方法,静态方法不依赖于对象,不需要将类实例化便可以调用。由于这个特点,所以静态方法中不能有this,也不能访问非静态成员变量和非静态方法。当非静态成员变量和非静态方法可以访问静态方法。


六、final

final关键字可以修饰类、方法、属性和变量

  • final修饰类,则该类不允许被继承,为最终类。
  • final修饰方法,则该方法不允许被覆盖(重写)。
  • final修饰属性,则该类的属性不会进行隐式初始化(类的初始化属性必须有值),要么在final属性定义时直接赋值,要么在构造方法中赋值(但只能选其一)。
  • final修饰变量,则该变量只能被赋一次值,即常量。

七、权限修饰符

权限修饰符可以用来限制类的属性和方法的访问范围。

  1. private。被private修饰的属性或方法只对本类可见。
  2. 默认。什么修饰符都不加,则这些属性和方法对本类和同包可见。
  3. protected。被protected修饰的属性或方法对本类、同包和其所有子类可见。
  4. public。被public修饰的属性或方法,对一切可见。

以上的权限修饰符用来修饰属性和方法,如果我们想要修饰类,则只能使用public和default修饰。

  1. default。被default修饰的类仅在包内可见。
  2. public。被public修饰的类对一切可见。

八、封装

封装是一种提升程序健壮性的技术,可以保护我们的对象属性不会被意外或恶意篡改。

1. 对属性使用private保护。

2. 使用getter/setter方法来访问属性。


九、this和super

1.this代表了当前对象。我们可以使用this.属性访问当前对象属性,使用this.方法来访问当前对象的方法。

当成员变量和局部变量之间同名发生冲突时,通过this访问成员变量。

2.super关键字在子类内部使用,代表父类对象。可以使用super.属性访问父类属性,使用super.方法来访问父类方法。

子类构造方法需要调用父类的构造方法时,通过super()访问(一般为第一条语句,也可以通过this()来调用自己的构造函数)。


十、继承

如果我们需要创建一个类,这个类是在其它类的基础上进行扩充或修改而来的,那么我们就说这个类继承了其它类。比如我们在动物类的基础上创建了猫类。我们把猫类称为动物类的子类或派生类,把动物类称为猫类的父类或基类。

继承的语法:

class 子类 extends 父类

如由Animal类创建Cat类

class  Cat extends Animals {
    ...
}

需要注意的是:

  • 子类拥有父类除private以外所有的属性和方法。
  • 子类可以拥有自己的属性和方法。
  • 子类可以重写父类的方法。
  • Java中的继承是单继承,一个类只有一个父类(Java可以通过implements接口实现多继承)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值