属性:这一类事物拥有的共同属性

方法:这一类事物共同能执行的功能

对象:使用类创建的具体某个东西

java中分为两种数据类型:

1.基本数据类型 2.引用数据类型:string ;定义的所有的类

面向对象的世界里:

对象可以干什么?完全取决于类是如何定义的

类要用class来定义

书写类的代码格式

public class 类名{

  • 属性:成员变量

  • 方法:成员方法

}

属性:用成员变量来描述。

          成员变量:直接写在类中的变量。

方法:成员方法 成员方法:

不写static就是成员方法

书写方法的代码格式

public void 方法名(){

方法体

}

this关键字:当前类的对象

  1. this可以在方法内部获取到对象中的属性信息

  2. 在调用方法的时候,java会自动的把对象传递给方法,在方法中由this来接受对象

this的作用

  1. this可以帮我们区分成员变量和局部变量

  2. this可以让调用类中的其他的构造方法

    加了this.就是成员变量

变量的查找顺序

先找自己方法内的,如果自己没有,就去this里面找

构造方法:

Java会自动赠送给每一个类一个无参数的构造方法

默认赠送的构造方法的代码体现:

public 类名(){

}

如果自己定义了构造方法,java就不再赠送了

在创建对象的时候,自动调用的方法。

自己书写时的代码格式:

public 类名(传参){

}

注意: 1.没有返回值这一项

2.在我们执行new的时候,自动调用构造方法

3.构造方法也是方法,也可以进行重载

可以让我们有更多的方式去创建对象

使用this可以访问其他构造方法

this()

作用: 在创建对象的时候,给对象设置属性信息

super关键字

super: 表示父类中的内容

用super和this来区分父类和子类中重名的内容

创建对象的过程: 先创建父类的对象,然后创建子类的对象

小总结:

1.super 可以获取到父类的内容

2.可以调用父类中的构造方法,必须写在子类构造方法的第一行,如果父类的构造是无参数的,可以不写;

3.如果父类没有无参数的构造,必须要写super。

static:静态

静态的内容在内存中是保留一份的,并且各个对象之间进行共享 推荐使用类名去访问静态的内容 特点:

1.数据共享

2.属于类的,并不属于对象

3.优先于对象产生的

通用构造器的书写代码格式

{

}

静态构造器的书写代码格式

static {

}

创建对象的过程(简单):执行顺序

1.静态构造器

2.通用构造器

3.构造方法--->创建对象用的

由于创建对象的过程是在静态内容加载完成之后,在静态方法和静态块里不能使用this。 在静态方法里可以调用静态的东西,同时可以使用类名访问静态方法。

访问权限

1.public 公共的,所有人都可以访问

2.default 包访问权限,在自己包内可以随意访问。

3.private 私有的

getter和setter

成员变量一般使用private来声明,保护成员变量不被胡乱的赋值,

如果想要访问就要通过set()方法和get()方法或者构造方法进行访问。

setter主要是给成员变量赋值,做一定的保护

getter从成员变量中获取数据

书写时的代码格式

private String name;

public String setName(String name){

 this.name = name;

}

public String getName(){

 return name;

}

继承:

子类可以自动拥有父类中除了私有内容外的其他所有内容

当出现x是一种y的时候,x就可以继承y

书写代码体现

public class 类 extends 父类{

}

作用:

  1. 简化代码开发

  2. 子类对父类进行扩展

方法的重写

重写:子类对父类提供的方法进行重写

语法:子类和父类中的方法的声明完全一致, 重写又被称为方法的覆盖

多态

多态:同一个对象拥有多种形态.

作用: 把不同的数据类型进行统一,让程序具有超强的可扩展性

向上转型: 把子类的对象赋值给父类的变量

缺点:

会屏蔽掉子类中特有的方法

向下转型: 把父类的对象转化回子类的变量

向下转型有可能有风险,

java要求必须要写强制类型转换 (转换之后的数据类型)变量

final 关键字

final:最终的

作用: 1.被final修饰的变量不可以被改变,又被称为常量

2.被final修饰的方法不可以被重写

3.被final修饰的类不可以被继承

final总结就是不可变

抽象abstract

抽象:现实中不存在的东西

在Java中:只声明,不实现。

抽象方法:使用abstract来修饰,不可以有方法体,直接用;结束即可

抽象类:如果一个类中有抽象方法,这个类必须是抽象类。

特点:

1.抽象类不可以创建对象

2.抽象类的子类,必须重写父类中的抽象方法,否则子类必须也是抽象类。

通过抽象类可以强制的要求子类中必须有哪些方法。

抽象类中可以有正常的方法。

书写格式:

public abstract class 类名{

public abstract void 方法名();

}

接口

  1. 接口实际上是一种特殊的抽象类

  2. 接口中所有的方法都是抽象方法

  3. 接口使用interface来声明

  4. 能继承接口的只能是接口

  5. 接口和类只能是实现关系 implements

  6. 接口一样具有多态性

作用

  1. 接口可以把很多不相关的东西进行整合

  2. 类只能单继承,接口支持多实现

  3. 书写格式:

public interface 类名{//接口使用interface来声明,已经不再是类了

//接口中所有的内容都是公开的,接口中所有的变量都是全局静态常量
//接口中所有的方法都是抽象方法,可以省略掉abstract,不可以有正常的方法

}

接口的实现

public interface 类名 implements 父类名{

//必须要实现抽象方法(进行父类中方法的重写)

}

object

万事万物皆对象

所有的东西都是对象

在Java中所有的类都要继承object

object是一个类,所有类的根

即使不写继承关系,那么默认也会继承

equals和 ==

== :判断左右两端的数据是否一致

equals:object类提供的一个方法,用来判断两个对象是否相等

equals可以自己重写

字符串的判断必须用equals来判断

代码格式:

对象一.equals(对象二);

toString方法

toString() 对一个对象的字符串的表示形式

Java官方推荐重写这个方法,默认的太丑了

Instanceof关键字

Instanceof:判断xxx对象是否是xxx类型的

用法://判断A是否是B

代码格式

If(A instanceof B){

}

参数传递的问题

值传递:把变量的值作为参数进行传递

引用传递:直接把变量作为参数进行传递

Java使用的是值传递