类:
属性:这一类事物拥有的共同属性
方法:这一类事物共同能执行的功能
对象:使用类创建的具体某个东西
java中分为两种数据类型:
1.基本数据类型 2.引用数据类型:string ;定义的所有的类
面向对象的世界里:
对象可以干什么?完全取决于类是如何定义的
类要用class来定义
书写类的代码格式
public class 类名{
-
属性:成员变量
-
方法:成员方法
}
属性:用成员变量来描述。
成员变量:直接写在类中的变量。
方法:成员方法 成员方法:
不写static就是成员方法
书写方法的代码格式
public void 方法名(){
方法体
}
this关键字:当前类的对象
-
this可以在方法内部获取到对象中的属性信息
-
在调用方法的时候,java会自动的把对象传递给方法,在方法中由this来接受对象
this的作用
-
this可以帮我们区分成员变量和局部变量
-
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 父类{
}
作用:
-
简化代码开发
-
子类对父类进行扩展
方法的重写
重写:子类对父类提供的方法进行重写
语法:子类和父类中的方法的声明完全一致, 重写又被称为方法的覆盖
多态
多态:同一个对象拥有多种形态.
作用: 把不同的数据类型进行统一,让程序具有超强的可扩展性
向上转型: 把子类的对象赋值给父类的变量
缺点:
会屏蔽掉子类中特有的方法
向下转型: 把父类的对象转化回子类的变量
向下转型有可能有风险,
java要求必须要写强制类型转换 (转换之后的数据类型)变量
final 关键字
final:最终的
作用: 1.被final修饰的变量不可以被改变,又被称为常量
2.被final修饰的方法不可以被重写
3.被final修饰的类不可以被继承
final总结就是不可变
抽象abstract
抽象:现实中不存在的东西
在Java中:只声明,不实现。
抽象方法:使用abstract来修饰,不可以有方法体,直接用;结束即可
抽象类:如果一个类中有抽象方法,这个类必须是抽象类。
特点:
1.抽象类不可以创建对象
2.抽象类的子类,必须重写父类中的抽象方法,否则子类必须也是抽象类。
通过抽象类可以强制的要求子类中必须有哪些方法。
抽象类中可以有正常的方法。
书写格式:
public abstract class 类名{
public abstract void 方法名();
}
接口
-
接口实际上是一种特殊的抽象类
-
接口中所有的方法都是抽象方法
-
接口使用interface来声明
-
能继承接口的只能是接口
-
接口和类只能是实现关系 implements
-
接口一样具有多态性
作用
-
接口可以把很多不相关的东西进行整合
-
类只能单继承,接口支持多实现
-
书写格式:
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使用的是值传递