Java 面向对象

107 阅读5分钟

1.方法:

样式:public void 方法名(传参){

}

2.构造方法:

  java默认的话会送一个构造方法,但是假如你重新定义了构造方法,那么java就不再赠送。

样式: public  类名(传参){

}

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

作用:可以用更多的方式区创建对象

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

this(参数)

4.static 静态

要使用类名去访问静态的变量

特点:1.数据共享

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

           3.是优于对象产生的

通用构造器:{

}

静态构造器:static {

}

构造方法:public   类名(){

}

创建对象的简单过程:

1.静态构造器

2.通用构造器

3.构造方法--》创建对象

创建对象的过程是在静态内容加载完成之后,所以在静态方法和静态块里不能使用this

静态方法里调用静态方法是可以的,

静态内容需要用类名去调用。

5.访问权限:

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

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

3.private 私有的

用的最多的都是private 和 public

6.getter 和 setter

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

getter:从成员变量中获取数据

7.继承

继承:子类可以拥有除父类私有变量之外的所有内容

放出现x是一种Y 的时候,x就可以继承Y

例如:黑熊怪是一种妖怪

public class 类 extends 父类{

}

作用: 简化代码的开发

继承其实是子类对于父类的扩展。

8.super

super:表示符类中的内容

this:表示自己类中的内容

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

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

     在子类构造方法中,会默认去构造父类的构造方法。

总结:1.super可以获取到父类中的内容。

2.可以调用父类的构造方法,必须写在子类构造方法的第一行,如果父类的构造方法是无参数的那么,可以不写,但如果有参数,则必须传参数。

9.方法的重写

重写:子类对父类中提供的方法进行重新定义

语法:子类和父类中的方法声明完全一致

重写又被称为方法的覆盖

10.多态

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

作用: 把不同的数据类型进行统一。

小知识点:

1.把子类的对象赋值给父类的变量 --》向上转型

缺点:屏蔽掉子类中特有的方法

2.把父类的变量转化回子类的变量--》向下转型

 向下转型有风险,java要求必须要写强制类型转换

向下转型格式:(转换之后的数据类型)变量

11.final

1.被final修饰的变量不能被改变,又称为常量

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

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

final 总结就是不可变

12.抽象

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

在java中, 只声明,不实现

abstract修饰方法,这个方法就是一个抽象方法,抽象方法没有方法体,直接用分号结束。

但是此时会报错,因为如果一个类中有抽象方法,那么这个类也必须是一个抽象类。

抽象类特点:

1.抽象类不可以创建对象,只是一个概念

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

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

小知识点:抽象类中可以有正常的方法

12.接口

1.接口实际上是一种特殊的抽象类,接口使用interface来声明

2.接口中的所有方法都是抽象方法,不可以有正常的方法

3.接口中的所有内容都是公开的,公共的

4.能继承接口的只能是接口,   接口和类只能是实现关系   关键字:implements

在实现接口的类中要       实现接口中的抽象方法(实际上就越是重写)

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

接口同样具有多态性。

接口可以把很多不相关的内容整合到一起。

特点:

1.接口中所有的方法都是抽象方法,都是公开的。,

2.接口中所有的变量都是全局静态变量

13.成员变量初始值

1.java中所有的变量必须先声明,后赋值才能使用。

2.java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值

byte:0

 int :0

short:0

long:0

float:0.0

double:0.0

char:[] 0

boolean:false  (0)

string:null

自己写的类:null

基本数据类型默认值都是0,包括Boolean

引用数据类型:null

null表示空,什么都没有,占位

14.Object

万物皆对象,所以的东西都是对象。

在java中所以的类都要继承Object

Object是一个类,是所有类的根

15.equals和==

==判断左右两端的数据是否一致(判断的是内存地址是否相等)

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

equals可以重写

字符串的判断一定要用equals来判断

16.toString方法

默认打印对象,就相当于自动的执行这个对象中的toString()方法

推荐重写

17.instanceof关键字

instanceof关键字:判断xxx对象是否是xxx类型。

18.内存分析:

1.堆:主要存放对象

2.栈:局部变量,以及基本数据类型的变量

3.代码区:类和对象

4.数据区:常量池和静态变量

19.参数传递的问题:

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

应用传递:直接把变量作为参数传递(内存地址)

java使用的是值传递