java 基础之面向对象1

定义:修饰 class 类名 、 修饰 可以是public、final、abstract,也可以省略。类名每个单词首字母大写,其他字母全部小写。

成员变量:用于定义类或类的对象包含的数据

定义:修饰 类型 变量名、修饰可以是public、 protected、private、static、 final(public、 protected、private)只出现一个。变量名第一个单词首字母小写,后面每个单词首字母大写,其他小写。

方法:用于定义该类或该类的实例的行为特征

定义:修饰 返回值类型 方法名(形参类型 形参名)。修饰符可以是public、 protected、 private、 static、final、abstract(final、abstract)只能出现一个。返回类型如果没有声明,则必须用void,声明了则方法内需要return。多组形参列表用“,”隔开,形参类型与形参名用空格隔开。

构造器:构造器用于构造该类的实例,Java通过new关键字来调用构造器。如果没有指定构造器,类无法创建实例,系统会默认一个构造器。

定义:修饰 构造名 (形参 形参名)。 修饰符可以是public、 protected、private、之一,构造器名和类名相同。

定义类之后,就可以使用类来创建对象、派生子类、定义变量、调用static方法。

创建对象:new关键字来调用某个类的构造器即可创建这个类的对象。

public class Person

    //下面定义了两个成员变量
    public string name;
    public int age;

    //下面定义了一个say方法
    public void say (String content)
    {
        System.out.println (content) ;

    }
//定义一个Person类型的变量
Person p;
//通过new关键字调用 Person类的构造器,返回一个 Person 对象
p = new Person ();

创建对象后,可以访问对象的实例变量或方法。对象可以访问类的成员变量或方法

//访问p对象的name成员变量并赋值
p.name = "人生";
//访问p对象的say方法
p.say("不")

static作修饰的方法和成员变量,既可通过类来调用,也可通过实例来调用;没有使用static修饰的普通方法和成员变量,只可通过实例来调用。
this :指向调用该方法的对象。出现在构造器中引用该构造器正在初始化的对象,出现在方法中引用调用该方法的对象。static修饰的方法中不能使用this 引用

方法

方法在逻辑上要么属于类,要么属于对象,只能在类里定义,不可以单独存在。执行方法时必须使用类或对象来作为调用者,调用方法时必须给这些形参指定参数值,参数传入方法的方式只有一种:值传递。

定义方法时,在最后一个形参的类型后增加(...),则表明该形参可以接受多个参数值。

public class northse
//定义形参个数可变的方法
public static void test(int a,string... books)

一个方法体内调用它自身,被称为方法递归。

如果同一个类中包含了两个或两个以上方法的方法名相同,但形参列表不同,则被称为方法重载。

成员和局部变量

成员变量指的是在类里定义的类变量和实例变量

类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,而实例变量则从该类的实例被创建起开始存在,直到系统完全销毁这个实例

public class Person
{
//定义一个实例变量
public string name;
//定义一个类变量
public static int eyeNum;
}

只要为一个类定义了类变量或实例变量,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化,成员变量默认初始化时的赋值规则与数组动态初始化时数组元素的赋值规则完全相同。类变量的作用域比实例变量的作用域更大。

局部变量指的是在方法里定义的变量。它可以分为代码块局部变量:在代码块中定义的局部变量,方法局部变量:在方法体内定义的局部变量,形参:在定义方法名时定义的变量。局部变量除形参之外,都必须显式初始化,否则不可以访问它们。

对于方法局部变量,其作用域从定义该变量开始,直到该方法结束;形参的作用域是整个方法体内有效,形参的初始化在调用该方法时由系统完成,形参的值由方法的调用者负责指定; 方法局部变量与形参也不能同名;同一个方法中不同代码块内的代码块局部变量可以同名;如果先定义代码块局部变量,后定义方法局部变量,前面定义的代码块局部变量与后面定义的方法局部变量也可以同名。如果方法里的局部变量和成员变量同名,局部变量会覆盖成员变量,如果需要在这个方法里引用被覆盖的成员变量,则可使用this(对于实例变量)或类名(对于类变量)作为调用者来限定访问成员变量。

public void test ()
{
    //局部变量覆盖成员变量
    String name ="神";
    //直接访问name变量,将输出name局部变量的值:"神"
    System.out.println (name);
    //将输出name实例变量的值:" "
    System.out.println (this.name) ;
}

当系统加载类或创建该类的实例时,系统自动为成员变量分配内存空间并指定初始值。局部变量定义后,系统不会为局部变量执行初始化,直到赋值时系统才会为其分配内存。局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中,当局部变量是基本类型时则直接把这个变量的值保存在该变量对应的内存中;如果局部变量是一个引用类型的变量,则这个变量里存放的是地址,通过该地址引用到该变量实际引用的对象或数组。

定义的变量是用于描述某个类或对象的固有信息的;类中需要以一个变量来保存该类或者实例运行时的状态信息;某信息需要在类的多个方法之间进行共享,则这个信息应该使用成员变量来保存。
 

封装

封装是面向对象的三大特征之一,指的是将对象状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而通过该类所提供的方法来实现对内部信息的操作和访问。

java提供了private、protected和 public,分别代表了3个访问控制级别,当不使用任何访问控制符来
修饰类或类成员时,系统默认使用default访问控制级别。
private :如果类里的一个成员(包括成员变量、方法和构造器等)使用其当修饰时,则这个成员只能在当前类的内部被访问。

default:如果类里的一个成员(包括成员变量、方法和构造器等)不使用任何访问控制符修饰,就称它是包访问权限的,
 

protected:如果类里的一个成员(包括成员变量、方法和构造器等)使用其当修饰时,那么这个成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问

public:如果类里的一个成员(包括成员变量、方法和构造器等)或外部类使用其当修饰时,那么这个成员或外部类就可以被所有类访问

外部类只能有两种访问控制级别: public和默认。Java允许将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。就意味着该源文件里定义的所有类都属于这个包。
package语句必须作为源文件的第一条非注释性语句,一个源文件只能指定一个包但可以包含多个import语句
如果创建处于其他包下类的实例,则在调用构造器时也需要使用包前缀。为了简化编程,Java引入了import 关键字,

构造器

构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。为了在构造器一个构造器中调用另一个构造器中的初始化代码,又不想创建出一个对象,可以使用this。使用this调用另一个重载的构造器只能在构造器中使用,而且必须作为构造器执行体的第一条语句。、

继承

Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类被称为父类。

修饰符 class Apple extends Fruit
{
    //定义部分

}

子类不能获得父类的构造器,如果定义一个Java类时并未显式指定这个类的直接父类,则这个类默认扩展java.lang.Object类。
子类包含与父类同名方法的现象被称为方法重写,方法重写需要子类与父类方法名和形参列表相同
、子类方法返回值类型和子类方法声明抛出的异常类应比父类更小或相等,子类方法的访问权限应比父类方法的访问权限更大或相等。覆盖方法的同名方法要么都是类方法,要么都是实例方法。
如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法。super 用于限定该对象调用它从父类继承得到的实例变量或方法,super 不能出现在static修饰的方法中。

子类不会获得父类的构造器,但子类构造器里可以使用super调用父类构造器的初始化代码。

多态

Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。如果编译时类型和运行时类型不一致,就可能出现多态。相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,如果引用变量调用它运行时类型的方法,则强制类型转换成运行时类型。引用类型之间的转换只能在具有继承关系的两个类型之间进行。

instead of用于判断前面的对象是否是后面的类,前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类。

继承是实现类复用的重要手段,但破坏了封装。

初始化块

Java使用构造器来对单个对象进行初始化操作,一个类里有多个初始化块。初始化块的修饰符只能是static,无法通过类或对象调用。初始化块是一段固定执行的代码,它不能接收任何参数。系统将系统在类初始化阶段执行静态初始化块,而不是在创建对象时才执行。
 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值